Microsoft的C ++编译器(cl.exe包括在Visual Studio中)提供了几个优化开关。它们中的大多数之间的差异似乎是不言而喻的,但是我不清楚/O2(将代码优化为最大速度)与/Ox(选择“完全优化”)之间的区别。
我试着阅读文档的/Ox选项,它似乎证实,该交换机还支持优化的最高速度,而不是大小:
所述
/Ox编译器选项产生在较小尺寸有利于代码的执行速度。
但特别是,“备注”部分下的以下声明引起了我的注意:
通常,请指定
/O2(Maximize Speed)而不是/Ox。
所以我的问题是,为什么要一个普遍青睐/O2了/Ox?后一个选项是否启用已知的特定优化,从而导致无法预料的错误或其他意外行为?仅仅是获得的优化数量不值得额外的编译时间吗?还是由于VS中/O2的默认选项而导致的这完全是毫无意义的“推荐” ?