C#Debug vs Release

kou*_*des 12 c# debugging release

Windows服务在调试版本和发布版本之间获得多少性能提升(如果有的话)以及为什么?

Mic*_*urr 6

对于托管代码,除非你有很多东西有条件地编译为DEBUG构建,否则应该没什么区别 - IL应该几乎相同.在调试器下运行时抖动的生成方式不同 - 对IL的编译不会受到太大影响.

/optimize在编译IL时会有一些事情,但它们并不是特别具有攻击性.并且一些IL优化可能会由抖动优化处理,即使它们没有在IL中进行优化(如删除nops).

有关详细信息,请参阅Eric Lippert的文章http://blogs.msdn.com/ericlippert/archive/2009/06/11/what-does-the-optimize-switch-do.aspx:

/ optimize标志不会改变我们的大量发射和生成逻辑.我们尝试始终生成简单,可验证的代码,然后依靠抖动在生成真实机器代码时进行大量优化.但是我们将使用该标志集进行一些简单的优化.

阅读Eric的文章,了解有关/optimizeIL生成的信息.