【问题标题】:C# compiler - what optimizations are performed with the 'optimize code' flag turned on? [closed]C# 编译器 - 打开“优化代码”标志会执行哪些优化? [关闭]
【发布时间】:2014-02-17 14:11:20
【问题描述】:

我计划深入了解用 C# 编写的 .NET 系统的继承用法。我想分析中间语言代码而不是 C# 代码,以便还可以查看已编译的代码。当启用优化代码标志时,是否有任何关于 C# 编译器可以执行哪些优化的信息?

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

互联网上的大多数问题和资源都说“次要优化”和其他模糊的东西。我需要特别了解为发布模式编译时可能发生的语义变化。我对代码的性能不感兴趣。

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

【问题讨论】:

  • 可能有助于详细说明您对此感兴趣的原因,例如,您是否关心性能?
  • @Jim,是的,谢谢,我知道那个。不过不知道有没有更详细的出处。

标签: c# optimization compiler-construction


【解决方案1】:

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

Eric Lippert(C# 编译器团队的前首席开发人员)在他的博客上回答了这个问题。几点说明:

  • 消除死代码(永远无法到达的分支,始终返回 true 的检查,...)
  • nullcheck 优化。
  • 去除间歇性调用(A(B(C(D)))改写为A(D));
  • 双重回访。

整个博客有更多示例,如果您想了解此内容,我强烈建议您阅读。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多