C# csc.exe/optimize flag-使用optimize flag有任何不利影响吗?

C# csc.exe/optimize flag-使用optimize flag有任何不利影响吗?,c#,csc,C#,Csc,我正在通过csc.exe编译一个C#程序 我注意到csc.exe的默认设置是不包括优化选项。相反,您必须使用/optimize标志显式声明它 我想知道使用/optimize标志是否有任何潜在的不利影响。换句话说,我为什么不总是想用它呢 我很想确切地了解旗帜在“引擎盖下”的作用,所以如果能链接到一些好的文档,我将不胜感激(目前还没有在MSDN或谷歌上找到任何东西) 谢谢您可以找到的最佳文档是新编译器平台“Roslyn”的代码,您可以从中使用编译器标志 如果单击该属性,您将看到代码中的所有引用 该标

我正在通过csc.exe编译一个C#程序

我注意到csc.exe的默认设置是不包括优化选项。相反,您必须使用
/optimize
标志显式声明它

我想知道使用
/optimize
标志是否有任何潜在的不利影响。换句话说,我为什么不总是想用它呢

我很想确切地了解旗帜在“引擎盖下”的作用,所以如果能链接到一些好的文档,我将不胜感激(目前还没有在MSDN或谷歌上找到任何东西)


谢谢

您可以找到的最佳文档是新编译器平台“Roslyn”的代码,您可以从中使用编译器标志

如果单击该属性,您将看到代码中的所有引用

该标志的主要后果之一似乎是调用并尝试优化代码,特别是尽可能减少对堆栈的推动

var a = Foo();
var b = Bar();
Baz(a, b);
可以写为(伪IL):

但这完全有可能优化它以移除本地人:

Call Foo
Call Bar
Call Baz

(显然还有更复杂的情况)

您可以找到的最佳文档是新编译器平台“Roslyn”的代码,您可以从中使用编译器标志

如果单击该属性,您将看到代码中的所有引用

该标志的主要后果之一似乎是调用并尝试优化代码,特别是尽可能减少对堆栈的推动

var a = Foo();
var b = Bar();
Baz(a, b);
可以写为(伪IL):

但这完全有可能优化它以移除本地人:

Call Foo
Call Bar
Call Baz

(显然还有更复杂的情况)

您可以找到的最佳文档是新编译器平台“Roslyn”的代码,您可以从中使用编译器标志

如果单击该属性,您将看到代码中的所有引用

该标志的主要后果之一似乎是调用并尝试优化代码,特别是尽可能减少对堆栈的推动

var a = Foo();
var b = Bar();
Baz(a, b);
可以写为(伪IL):

但这完全有可能优化它以移除本地人:

Call Foo
Call Bar
Call Baz

(显然还有更复杂的情况)

您可以找到的最佳文档是新编译器平台“Roslyn”的代码,您可以从中使用编译器标志

如果单击该属性,您将看到代码中的所有引用

该标志的主要后果之一似乎是调用并尝试优化代码,特别是尽可能减少对堆栈的推动

var a = Foo();
var b = Bar();
Baz(a, b);
可以写为(伪IL):

但这完全有可能优化它以移除本地人:

Call Foo
Call Bar
Call Baz

(显然还有更复杂的情况)

也许你可以想象,你不是第一个对这个选项感到好奇的C#程序员。谷歌“c#compiler/optimize option”和前6个搜索结果包括4个问题,所以这些问题已经问过了。@HansPassant-我可能在搜索方面做得更好。也许我太关注csc.exe了,因为我使用了搜索词“csc.exe/optimize”,它没有返回任何好的结果。谢谢你给我上一篇文章的链接。我发现Eric Lippert帖子的链接信息特别丰富,也许你可以想象,你不是第一个对这个选项感到好奇的C#程序员。谷歌“c#compiler/optimize option”和前6个搜索结果包括4个问题,所以这些问题已经问过了。@HansPassant-我可能在搜索方面做得更好。也许我太关注csc.exe了,因为我使用了搜索词“csc.exe/optimize”,它没有返回任何好的结果。谢谢你给我上一篇文章的链接。我发现Eric Lippert帖子的链接信息特别丰富,也许你可以想象,你不是第一个对这个选项感到好奇的C#程序员。谷歌“c#compiler/optimize option”和前6个搜索结果包括4个问题,所以这些问题已经问过了。@HansPassant-我可能在搜索方面做得更好。也许我太关注csc.exe了,因为我使用了搜索词“csc.exe/optimize”,它没有返回任何好的结果。谢谢你给我上一篇文章的链接。我发现Eric Lippert帖子的链接信息特别丰富,也许你可以想象,你不是第一个对这个选项感到好奇的C#程序员。谷歌“c#compiler/optimize option”和前6个搜索结果包括4个问题,所以这些问题已经问过了。@HansPassant-我可能在搜索方面做得更好。也许我太关注csc.exe了,因为我使用了搜索词“csc.exe/optimize”,它没有返回任何好的结果。谢谢你给我上一篇文章的链接。我发现Eric Lippert的帖子的链接特别有用@VirtualBlackBox-谢谢你提供了Roslyn源代码的链接。这确实有助于我理解幕后发生的事情。我也非常感谢您提供的示例,以帮助理解该选项尝试进行哪些类型的优化。@VirtualBlackBox-感谢您提供了到Roslyn源代码的链接。这确实有助于我理解幕后发生的事情。我也非常感谢您提供的示例,以帮助理解该选项尝试进行哪些类型的优化。@VirtualBlackBox-感谢您提供了到Roslyn源代码的链接。这确实有助于我理解幕后发生的事情。我也非常感谢您提供的示例,以帮助理解该选项尝试进行哪些类型的优化。@VirtualBlackBox-感谢您提供了到Roslyn源代码的链接。这确实有助于我理解幕后发生的事情。我很感谢您提供的示例,它有助于理解该选项尝试进行哪些类型的优化。