【发布时间】:2015-06-20 10:19:54
【问题描述】:
我一直在尝试阅读 MSDN pages 上的各种优化标志。
我们目前将大部分项目设置为/O2,以优化“最大化速度”。
我的困惑是这到底意味着什么。关于/O2 标志,以下哪项陈述更接近正确?
- 针对速度和大小优化代码,但如果存在争用首选针对速度进行优化
- 仅优化代码速度,不优化大小。
我提出我们应该使用 /Ox 标志的论点,但那时我认为选项 2 是正确的。
我基本上被告知“我们不会从 /O2 更改为 /Ox,除非有人有确凿的证据表明我们需要这样做”。
所以我的问题是/O2 仍然执行内存优化吗?例如。返回值优化、复制省略等。从/O2 切换到/Ox 会有什么好处?
【问题讨论】:
-
/O2 页面明确提到了复制省略。 /Ox 页面显示“通常,指定 /O2(最大化速度)而不是 /Ox,指定 /O1(最小化大小)而不是 /Oxs。”
-
返回值优化、复制省略等主要是速度优化,我想说。
-
来自 /Ox 上的链接“通常,指定 /O2(最大化速度)而不是 /Ox”
-
你为什么不衡量这些标志对你的软件有什么影响?
标签: c++ performance optimization visual-studio-2013 compiler-optimization