在Visual Studio C/C++项目中,可以很容易地在“属性页|C/C++|优化”中修改编译器的优化设置。例如,我们可能会给出不同的优化级别,例如/O2和/O3,以及高级优化,例如“省略帧指针”。
但是,我无法简单地在 Visual Studio 的 C# 项目中找到相应的 UI。我能找到的只是关闭优化:“优化代码”复选框就是我所拥有的。
C# 用户可以像 C/C++ 一样控制详细的编译器优化吗?我必须在命令行中提供编译器选项吗?
C# 代码的大部分优化在 JIT 编译器级别进行,而不是在 C# 编译器级别进行。基本上没有像C或C++那样详细的设置。
运行时有一些与性能相关的元素可以调整,例如 GC 策略,但不是很多。
当我从命令行构建基准测试等时,我倾向于使用类似这样的东西:
csc /o+ /debug- Test.cs
(I believe我已经看到匹配的 pdb 文件的存在会对性能产生影响,可能是在抛出异常的成本方面,因此debug-
切换...但我可能是错的。)
编辑:如果您想看到每一位优化所带来的差异,有一种方法可能会很有趣:
- 在经过优化和未经优化的情况下编译相同的代码
- 在IL模式下使用ildasm或Reflector看看有什么区别
- 一次手动应用相同的更改(使用 ilasm)并测量每个更改的数量
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)