【问题标题】:Visual C++ Compiler Optimization Flags: Difference Between /O2 and /OtVisual C++ 编译器优化标志:/O2 和 /Ot 之间的区别
【发布时间】:2011-08-25 19:53:56
【问题描述】:

/Ot 标志(“支持快速代码”)和/O2 标志(“最大化速度”)有什么区别?

/Os/O1 同上。)

【问题讨论】:

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


【解决方案1】:

/O1 和 /O2 将多个选项捆绑在一起,以实现更大的目标。因此 /O1 做出了许多有利于大小的代码生成选择; /O2 做同样的事情,并且偏爱速度。

/O1 包括 /Os 以及其他选项。 /O2 包括 /Ot 以及其他选项。 /O1 和 /O2 都启用了一些优化。而且,根据您程序的分页行为,如果分页代码在指令执行成本上支配您的性能,/O1(大小)可能会比 /O2 产生更快的速度。

这里是 /O1 和 /O2 在 VC++ 2010 中影响的简短总结

http://msdn.microsoft.com/en-us/library/8f8h5cxt.aspx

并包含其他版本 VC 的链接。

马丁

【讨论】:

  • 感谢您的回复,但有个问题:如果我将/O1/Ot 放在一起会发生什么?是偏向于大小还是速度?
  • 如果您按该顺序放置 /O1 然后 /Ot(并且没有后续选项或编译指示),您将获得 O1 中的所有其他选项,并且 /O1 中的 /Os 被删除并 /Ot 替换它.然后你得到的是大小和速度优化的混合体。
【解决方案2】:

请参阅 MSDN 上的 /O1, /O2 (Minimize Size, Maximize Speed) 文章。

它声明/O2 相当于:

/Og /Oi /Ot /Oy /Ob2 /Gs /GF /Gy

所以/O2 启用了/Ot 所做的所有事情,以及更多。 /O1/Os 相同,但这次是大小。

【讨论】:

    【解决方案3】:

    没有区别。 /Ot/O2 优化的一部分。

    http://msdn.microsoft.com/en-us/library/f9534wye.aspx

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-20
      • 2012-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多