使用/ O2与/ Ox进行编译 - 这是更快的(根据经验)?

时间:2012-08-11 05:46:14

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

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

  

1)编译优化代码 - /Ox最好,/O2也表现良好。有趣的是,/O1      (优化尺寸)不起作用。

如果差异真的只是/GF /Gy,就像上面提到的那样,那么/GF就无关紧要了(字符串池),而/Gy(省略框架指针)真的不能就我的想象而言,伤害了你。

我有什么遗失的东西吗?一般来说/Ox会更快吗?为什么或为什么不呢?

1 个答案:

答案 0 :(得分:1)

/Gy不是帧指针遗漏,即/Oy,至少在/Ox/O1/O2下启用。

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

您关联的MSDN页面也说使用/O2代替/Ox,因此我认为“/Ox一般来说更快”的想法没有任何优点。