c++ - 使用/O2 与/Ox 编译——哪个更快(根据经验)?

标签 c++ visual-studio visual-c++ compiler-optimization compiler-options

This questionMSDN似乎暗示/O2 会更快,但如果您查看 Microsoft 自己的 SafeInt类,你会注意到它说:

1) Compile optimized code - /Ox is best, /O2 also performs well. Interestingly, /O1 (optimize for size) does not work as well.

如果差异真的只是 /GF/Gy 正如上面的问题所说,那么 /GF 是无关紧要的(字符串池),并且 /Gy(省略帧指针)不会真正伤害你,据我想象。

有什么我想念的吗?一般而言,/Ox 是否更快?为什么或为什么不?

最佳答案

/Gy不是帧指针省略,也就是/Oy,至少在/Ox/O1下启用, /O2.

/Gy 是 COMDAT 生成(函数级链接),它倾向于减少工作集大小,但不应真正影响代码质量。在模板和内联代码上,例如 SafeInt,可能根本没有明显的区别。

您链接的 MSDN 页面还说要使用 /O2 而不是 /Ox,所以我不认为“/Ox faster in general”有任何优点。

关于c++ - 使用/O2 与/Ox 编译——哪个更快(根据经验)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11912289/

相关文章:

c++如何使用ElementComparator类在JUCE中对数组进行排序

c++ - Windows 的免费内存调试器?

c++ - 删除() vector 中的元素不起作用

.net - Visual Studio 保存时自动复制文件

visual-studio - 带有 VS 代码 : Why doesn't VS Code see my WSL installation? 的 WSL

c++ - 无法从 Object 转换为 Int

c++ - C++中的异常被捕获后找出源头?

c - 关闭优化时无法解析的外部符号__aullshr

c++ - 如何将列表控件项标记为选中?

c++ - 在 C++ 中使用文本文件进行身份验证