Microsoft 的 C++ 编译器(cl.exe
包含在 Visual Studio 中)提供了几个优化开关。它们中的大多数之间的区别似乎不言自明,但我不清楚/O2
(优化代码以获得最大速度)和/Ox
(选择“完全优化”)之间的区别。
我已经尝试阅读该选项的文档/Ox
,并且似乎确认此开关还可以优化最大速度,而不是大小:
编译器选项生成的
/Ox
代码有利于执行速度而不是较小的大小。
但特别是,“备注”部分下的以下声明引起了我的注意:
通常,指定
/O2
(Maximize Speed) 而不是/Ox
。
所以我的问题是,为什么人们普遍/O2
赞成/Ox
?后一个选项是否启用已知会导致不可预见的错误或其他意外行为的特定优化?仅仅是获得的优化量不值得额外的编译时间吗?或者这只是一个完全没有意义的“建议”,因为它/O2
是VS中的默认选项?