我遇到了选项 C/C++ -> General -> Favor Size or Speed。我想知道我是否选择了速度选项而不是大小。除了尺寸之外,它们会有什么缺点吗?默认都不是。如果我选择,应用程序的速度会显着提高吗Favor Fast Code /Ot
2 回答
虽然我对这个编译器设置没有深入的了解(我通常更喜欢快速代码并且再也没有考虑过),但我可以看到这可能会产生什么影响:
在某些处理器上,在某些时间执行某些操作可能会导致停顿。RAX
例如,在写入部分寄存器 ( ) 后立即访问完整寄存器 ( ) 之类的事情AL
。虽然现代处理器通常可以通过重新排序指令来解决这些停顿,但有时它们仍然是不可避免的。
我怀疑通过此设置,编译器有时可能会插入无操作指令以尝试防止发生这些停顿。一般来说,执行一些无操作仍然比停止更快。
显然,这些无操作将使您的代码更大,这可能会导致更多的指令缓存提取(这可能会严重影响非常紧凑的内部循环的性能 - 但这些更可能一开始就停止),但不应该有任何其他不利影响。
我可以向有此类问题的任何人提供的最佳建议是尝试不同的设置并通过分析器运行代码,看看您是否得到明显不同的结果。
1.如果你想优化代码使用发布版本,如果你使用的是发布版本,那么Maximum speed(/O2)选项默认开启,相当于Favor fast Code(/Ot) 2.现在,如果你更改偏好大小或速度选项以支持小代码(/Os),这是默认的“既不”,您可能会看到可执行文件大小的急剧变化。
这可能会有所帮助https://msdn.microsoft.com/en-us/library/8f8h5cxt(v=vs.90).aspx