Visual Studio中的“优化代码”复选框。它到底是做什么用的?

时间:2009-08-21 22:10:40

标签: visual-studio

Visual Studio 2005/2008中“项目属性”的“构建”选项卡包含“优化代码”。

文档指出它“......启用或禁用编译器执行的优化,以使您的输出文件更小,更快,更高效。”

  1. 我的问题是为什么我不应该这样做?
  2. 为什么默认情况下不启用?
  3. 它实际上做了什么?

3 个答案:

答案 0 :(得分:25)

  1. 您不希望这样做是为了构建调试,因为它使得逐步执行代码更加困难,因为正在运行的实际代码可能无法正确反映您所编写的内容(因为某些行将被优化)< / p>

  2. 由于上述原因,DEBUG版本默认不启用,默认情况下应在发布版本上启用

  3. 它执行优化,例如动态内联和删除不需要的局部变量。任何可以在编译时决定的优化。

答案 1 :(得分:3)

维基百科有一篇关于compiler optimization的文章,涵盖了许多基本类型的优化。

您不希望创建优化的调试版本。优化会影响代码的可调试性 - 可能会删除某些代码行,来自函数不同部分或不同函数的某些代码行可能会合并在一起,局部变量可能会折叠在一起,依此类推。这意味着当调试当前行时,由于代码被重新组织,可能会出现随机跳转,并且检查局部变量可能会产生误导 - 当不再需要本地空间时,可能会重复使用本地空间,并且看起来会产生错误的结果。

答案 2 :(得分:1)

看看What is /optimize C# compiler key intended for?的答案他们回答你的问题(特别是Noldorin的回答)。