在Visual Studio C/C++项目中,很容易在“属性页| C/C++ |优化”中修改编译器的优化设置。例如,我们可能会给出不同的优化级别,如/O2和/O3,以及“省略帧指针”等高级优化。
但是,我不能简单地在Visual Studio的C#项目中找到相应的UI。我所能找到的就是关闭优化:“优化代码”复选框是我唯一的选择。
C#用户可以像C/C++一样控制编译器的详细优化吗?我必须在命令行中给出编译器选项吗?
发布于 2010-07-12 14:01:43
C#代码的大部分优化是在即时编译器级别进行的,而不是在C#编译器级别上进行的。基本上没有像C或C++中那样的详细设置。
运行时有一些与性能相关的元素可以调整,比如GC策略,但不是很多。
当我从命令行构建基准测试等时,我倾向于使用如下内容:
csc /o+ /debug- Test.cs
(我相信我已经看到匹配的pdb文件的存在对性能产生了影响,可能是在抛出异常的成本方面,因此使用debug-
开关...但我可能错了。)
编辑:如果你想看看每一点优化带来的不同,有一种方法可能会被证明是有趣的:
在IL模式下,使用和不使用optimization
发布于 2010-07-12 13:55:25
AFAIK C#编译器没有这样详细的优化属性。可能启用或禁用了优化。
http://msdn.microsoft.com/en-us/library/6s2x2bzy.aspx
我只找到了两个:
/filealign
指定输出中部分的大小file./optimize
启用/禁用optimizations.发布于 2015-03-18 19:08:24
有点OT,但看过这个问题的人可能会发现这个问题很有用:
将此代码添加到方法签名: MethodImpl(MethodImplOptions.NoOptimization)
关闭该方法的编译器优化。
https://stackoverflow.com/questions/3226157
复制相似问题