在Visual Studio C / C ++项目中,可以轻松地在“Property Pages | C / C ++ | Optimization”中修改编译器的优化设置。例如,我们可以提供不同的优化级别,如/ O2和/ O3,以及高级优化,如“忽略帧指针”。
但是,我不能简单地在Visual Studio的C#项目中找到相应的UI。我所能找到的只是关闭优化:“优化代码”复选框就是我所拥有的。
C#用户可以控制详细编译器的优化,如C / C ++吗?我是否必须在命令行中提供编译器选项?
答案 0 :(得分:8)
C#代码的大部分优化都是在JIT编译器级别而不是C#编译器上进行的。基本上没有像C或C ++中那样的详细设置。
运行时中有一些与性能相关的元素可以调整,例如GC策略,但不是很多。
当我从命令行构建基准测试等时,我倾向于使用这样的东西:
csc /o+ /debug- Test.cs
(我相信我已经看到匹配的pdb文件的存在会对性能产生影响,可能就抛出的异常成本而言,因此debug-
切换。但我可能错了。)
编辑:如果你想看到优化的每一点都有区别,那么有一种方法可能会很有趣:
答案 1 :(得分:4)
AFAIK C#编译器没有这样详细的优化属性。可能启用或禁用优化。
http://msdn.microsoft.com/en-us/library/6s2x2bzy.aspx
我发现只有两个:
/filealign
指定输出文件中各节的大小。
/optimize
启用/禁用优化。
答案 2 :(得分:1)
有点旧,但看到这个问题的人可能会觉得这很有用:
将此添加到方法签名: [MethodImpl(MethodImplOptions.NoOptimization)]
关闭该方法的编译器优化。