C#编译器 - 在启用“优化代码”标志的情况下执行哪些优化?

时间:2014-02-17 14:11:20

标签: c# optimization compiler-construction

我计划获得对用C#编写的.NET系统的继承使用情况的一些见解。我想分析中间语言代码而不是C#代码,以便也可以查看编译代码。有没有关于在启用优化代码标志时C#编译器可以执行哪些优化的信息?

我正在分析与继承图相关的调用行为(例如,使用多态,从基类重用方法等)。

互联网上的大多数问题和资源都表示“次要优化”和其他含糊不清的事情。我需要具体了解编译发布模式时可能发生的语义变化。我对代码的性能不感兴趣。

例如,Scott Hanselman在his blog中发布方法内联将在发布模式下发生。但这只是一个例子。这意味着What is /optimize C# compiler key intended for? 没有回答我的问题。

1 个答案:

答案 0 :(得分:1)

http://blogs.msdn.com/b/ericlippert/archive/2009/06/11/what-does-the-optimize-switch-do.aspx

Eric Lippert(C#编译团队的前主要开发人员)在他的博客上回答了这个问题。一些评论:

  • 消除死代码(永远不会到达的分支,总是返回true的分支,...)
  • nullcheck optimization。
  • 删除间歇性通话(A(B(C(D)))重写为A(D));
  • 双回电话。

整个博客还有更多示例,如果您想了解这一点,我建议您阅读。