This question和MSDN似乎暗示/ O2会更快,但如果您查看Microsoft自己的SafeInt课程,您会注意到它:
1)编译优化代码 -
/Ox
最好,/O2
也表现良好。有趣的是,/O1
(优化尺寸)不起作用。
如果差异真的只是/GF /Gy
,就像上面提到的那样,那么/GF
就无关紧要了(字符串池),而/Gy
(省略框架指针)真的不能就我的想象而言,伤害了你。
我有什么遗失的东西吗?一般来说/Ox
会更快吗?为什么或为什么不呢?
答案 0 :(得分:1)
/Gy
不是帧指针遗漏,即/Oy
,至少在/Ox
,/O1
,/O2
下启用。
/Gy
是COMDAT生成(函数级链接),它往往会减少工作集大小,但不应该真正影响代码质量。在模板和内联代码上,例如SafeInt,可能根本就没有明显的区别。
您关联的MSDN页面也说使用/O2
代替/Ox
,因此我认为“/Ox
一般来说更快”的想法没有任何优点。