.NET代码的代码优化是否受到重命名而不是Release的影响?

时间:2013-04-01 19:10:45

标签: c# visual-studio build release buildconfiguration

我有一个简单的场景,我继承了代码,其中构建配置的名称与标准配置的名称完全不同。

特别是,我们的“生产”配置更像是我们的发布配置。

所以我想我有几个问题:

  1. 什么需要打开或关闭,只是这样我可以仔细检查,使某些东西成为“释放”配置?事情,如代码优化,调试符号等。
  2. 如果启用了代码优化等,那么与库存发布配置有什么不同,可能是在JIT或编译器级别硬编码的东西?
  3. 在第1项中的内容之外,以及在标准版本配置中找到的内容,是否还有其他任何应该在配置级别启用/禁用会对性能产生显着影响的内容?

1 个答案:

答案 0 :(得分:1)

1和2 - 发布和调试之间存在非常小的差异:启用了优化(请参阅what it means by Eric Lippert),并且没有为发布版本定义DEBUG。

了解两种配置如何不同的最简单方法是创建基本项目并比较配置部分以进行调试和发布。

调试:Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' "

<Optimize>false</Optimize>
<DefineConstants>DEBUG;TRACE</DefineConstants>

发布:Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' "

<Optimize>true</Optimize>
<DefineConstants>TRACE</DefineConstants>

调试信息类型也有差异,但主要影响调试的便利性。

3 - 对于提高性能的所有类型的解决方案,没有其他通用的通用方法。每种类型的解决方案都有调整性能的方法 - 正确的日志记录配置,在ASPX中编译相关文件的选项,NGen到JIT之前的选项,挑选x86 / x64 ......基本上你需要开始做常规的性能工作 - 设定目标,测量,调整/优化。