该选项的名称告诉的东西,但什么样的Visual Studio /编译器真的,什么是真正的后果是什么?
编辑:如果你在Google上搜索,你可以找到this address,但是这并不是我真正期待的。我不知道真正的事情发生。例如,为什么环获得更短的时间,等等。
如果没有优化编译器产生非常愚蠢的代码 - 每个命令是非常直接的方式编写,以便它预期的事情。调试构建具有默认禁用优化,因为如果没有优化产生的可执行以直接的方式将源代码相匹配。
一旦你打开的优化,编译器应用多种不同的技术,使代码的运行速度,同时还在做同样的事情。优化和非优化之间最明显的差别构建在Visual C ++是实际上只要变量值被保存在寄存器中尽可能在最优化的构建,而无需优化它们总是存储到存储器中。这不仅影响了代码的运行速度,但它也影响调试。由于这种优化的结果,因为你是单步调试代码调试器不能可靠地获得一个变量的值。
存在由编译器应用,如在/O Options (Optimize Code) MSDN docs描述的多个其他优化。对于各种优化的一般描述技术看Wikipedia Compiler Optimization article。
从Paul Vick's博客:
简短的回答是:使用-Ox,让编译器完成其工作。
长的答案:不同的优化的效果是无法精确预测。有时,优化快速的代码将实际产生的大小优化时小码。如果你真的想要得到的性能(speedwise或sizewise)的最后0.01%,你要选择的基准不同组合。
此外,近期的Visual Studio版本具有更高级的优化,如链接时优化和档案导引优化选项。