一尘不染

调试与发布性能

c#

我遇到了以下段落:

“在Visual
Studio中编译代码时,IDE中的“调试与发布”设置对性能几乎没有影响……生成的代码几乎相同。C#编译器实际上并没有做任何优化。C#编译器仅吐出IL…,在运行时由JITer进行所有优化。JITer确实具有调试/发布模式,这对性能产生了巨大的影响。但这并不能阻止您运行项目的调试或发布配置,也不会阻止是否连接调试器。”

来源在这里,播客在这里

有人可以指导我阅读可以实际证明这一点的Microsoft文章吗?

谷歌搜索“ C#调试与发布性能 ”通常会返回结果,指出“ 调试对性能有很大影响 ”,“ 发布经过优化 ”和“ 不将调试部署到生产环境 ”。


阅读 153

收藏
2020-05-19

共1个答案

一尘不染

部分正确。在调试模式下,编译器会为所有变量发出调试符号,并按原样编译代码。在发布模式下,包括一些优化:

  • 未使用的变量根本不会编译
  • 如果某些循环变量被证明是不变的,则它们将被编译器带出循环
  • 不包含根据#debug指令编写的代码等。

其余的取决于JIT。

编辑:这里有优化的完整列表,由Eric
Lippert提供

2020-05-19