什么是/ optimize C#编译器密钥用于什么?
是否有/ optimize C#编译器密钥可以在任何地方完成的完整优化列表?
编辑: 为什么默认禁用? 是否值得在真实世界的应用程序中使用? – 默认情况下仅在“调试”配置中禁用,在“释放”中启用。
Scott Hanselman有一篇博客文章 ,其中展示了/ optimize(在发布版本中启用)的一些示例。
作为总结:/ optimize做了许多没有给出确切数字或定义的东西,但其中一个更明显的是方法内联(如果你有一个方法A()调用B()调用C()调用D() ,编译器可以“跳过”B和C并直接从A转到D),这可能会导致Release版本中出现“怪异”的callstack。
默认情况下,它对调试版本禁用。 对于Release版本,它已启用。
绝对值得启用此开关,因为编译器会根据您拥有的代码类型进行大量调整和优化。 例如:跳过冗余初始化,从不改变的比较等。
注意:如果打开优化作为您拥有的代码和生成的IL代码可能不匹配,则可能会遇到一些调试困难。 这就是它仅为Release版本打开的原因。
引自MSDN页面 :
/ optimize选项启用或禁用编译器执行的优化,以使输出文件更小,更快,更高效。
换句话说,它完全符合您的想法 – 优化由.NET VM执行的已编译CIL(通用中间语言)代码。 我不担心具体的优化是什么 – 足以说它们很多,在某些情况下可能相当复杂。 如果你真的对它做了什么样的事情感兴趣,你可能会调查Mono C#编译器 (我怀疑有关MS C#的详细信息是公开的)。
默认情况下,对Debug配置禁用优化的原因是它使某些调试function无法进行。 一些值得注意的:
实际上,优化的默认选项永远不应该改变。 关闭调试选项是非常有用的,而将其置于Release模式同样明智。
上述就是C#学习教程:什么是/ optimize C#编译器密钥用于什么?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/992259.html