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

5
在Visual Studio的C/C++项目中,很容易在“属性页| C/C++ | 优化”中修改编译器的优化设置。例如,我们可以给出不同的优化级别,如/O2和/O3,以及高级优化,如“省略框架指针”。
然而,在Visual Studio的C#项目中,我无法简单地找到相应的用户界面。我能找到的只是关闭优化:我得到的只有“优化代码”复选框。
C#用户能否像C/C++一样控制详细的编译器优化?我是否必须在命令行中给出编译器选项?

alt text

3个回答

9

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

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

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

csc /o+ /debug- Test.cs

我相信我看到匹配的pdb文件对性能有所影响,可能是在抛出异常的成本方面,因此使用debug-开关...但我可能是错的。
编辑:如果您想看到每个优化位的差异,可以尝试以下方法:
  • 将相同的代码编译为带或不带优化的版本
  • 使用ildasm或Reflector在IL模式下查看差异
  • 手动逐个应用相同的更改(使用ilasm)并测量每个更改的影响

谢谢,这很有道理。我想要看一下关于C#程序的编译器选项设置在性能方面的差别。 - minjang

4

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接