我在哪里可以修改Visual Studio中的详细C#编译器优化设置?

时间:2010-07-12 05:53:25

标签: c# .net visual-studio visual-studio-2010 compiler-optimization

在Visual Studio C / C ++项目中,可以轻松地在“Property Pages | C / C ++ | Optimization”中修改编译器的优化设置。例如,我们可以提供不同的优化级别,如/ O2和/ O3,以及高级优化,如“忽略帧指针”。

但是,我不能简单地在Visual Studio的C#项目中找到相应的UI。我所能找到的只是关闭优化:“优化代码”复选框就是我所拥有的。

C#用户可以控制详细编译器的优化,如C / C ++吗?我是否必须在命令行中提供编译器选项?

alt text http://i32.tinypic.com/28ststh.png

3 个答案:

答案 0 :(得分:8)

C#代码的大部分优化都是在JIT编译器级别而不是C#编译器上进行的。基本上没有像C或C ++中那样的详细设置。

运行时中有一些与性能相关的元素可以调整,例如GC策略,但不是很多。

当我从命令行构建基准测试等时,我倾向于使用这样的东西:

csc /o+ /debug- Test.cs

(我相信我已经看到匹配的pdb文件的存在会对性能产生影响,可能就抛出的异常成本而言,因此debug-切换。但我可能错了。)

编辑:如果你想看到优化的每一点都有区别,那么有一种方法可能会很有趣:

  • 使用和不使用优化编译相同的代码
  • 在IL模式下使用ildasm或Reflector来查看差异
  • 手动(使用ilasm)逐个应用相同的更改并测量每个更改

答案 1 :(得分:4)

AFAIK C#编译器没有这样详细的优化属性。可能启用或禁用优化。


http://msdn.microsoft.com/en-us/library/6s2x2bzy.aspx

我发现只有两个:

  • /filealign指定输出文件中各节的大小。

  • /optimize启用/禁用优化。

答案 2 :(得分:1)

有点旧,但看到这个问题的人可能会觉得这很有用:

将此添加到方法签名: [MethodImpl(MethodImplOptions.NoOptimization)]

关闭该方法的编译器优化。

详情请见此处: https://msdn.microsoft.com/en-us/library/system.runtime.compilerservices.methodimploptions%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396