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