【发布时间】:2011-07-01 02:30:11
【问题描述】:
Microsoft 的 C++ 编译器(cl.exe,包含在 Visual Studio 中)提供 several optimization switches。它们中的大多数之间的区别似乎不言自明,但我不清楚/O2(优化代码以获得最大速度)和/Ox(选择“完全优化”)之间的区别。
我已尝试阅读 documentation 中的 /Ox 选项,似乎确认此开关还可以优化最大速度,而不是大小:
/Ox编译器选项生成的代码有利于执行速度而不是更小的代码。
但特别是“备注”部分下的以下声明引起了我的注意:
通常,指定
/O2(最大化速度)而不是/Ox。
所以我的问题是,为什么人们通常更喜欢 /O2 而不是 /Ox? 后一种选项是否启用了已知会导致无法预料的错误或其他意外行为的特定优化?仅仅是获得的优化量不值得额外的编译时间吗?或者这只是一个完全没有意义的“建议”,因为/O2 是 VS 中的 默认 选项?
【问题讨论】:
标签: c++ visual-studio visual-c++ compiler-optimization compiler-options