根据msdn http://msdn.microsoft.com/en-us/library/8f8h5cxt.aspx,
/O2(最大速度)
相当于
/Og/Oi/Ot/Oy/Ob2/Gs/GF/Gy
并根据msdn http://msdn.microsoft.com/en-us/library/chh3fb0k%28VS.80%29.aspx再次,下面的编译指示
#pragma optimize( "[优化列表]", {on | off} )
在其“优化列表”中使用与 /O 编译器选项相同的字母。可用的编译指示字母有:
-
g - 启用全局优化。
-
p - 提高浮点一致性。
-
s or t - 指定短或快速的机器代码序列。
-
y - 在程序堆栈上生成帧指针。
我应该使用哪些与 /O2 具有相同的含义?
微软文档文章/O1、/O2(最小化尺寸,最大化速度) https://learn.microsoft.com/en-us/cpp/build/reference/o1-o2-minimize-size-maximize-speed?view=vs-2017对于 Visual Studio 2017 来说:
/O1 和 /O2 编译器选项是设置多个选项的快速方法
立即提供特定的优化选项。 /O1 选项设置
单独的优化选项可创建最小的代码
大多数情况。 /O2 选项设置创建
大多数情况下最快的代码。 /O2 选项是默认选项
用于发布版本。该表显示了设置的具体选项
通过 /O1 和 /O2:
Option Equivalent to
/O1 (Minimize Size) /Og /Os /Oy /Ob2 /GF /Gy
/O2 (Maximize Speed) /Og /Oi /Ot /Oy /Ob2 /GF /Gy
来自微软文档文章/O 选项(优化代码) https://learn.microsoft.com/en-us/cpp/build/reference/o-options-optimize-code?view=vs-2017:
-
/Og
实现全局优化
-
/Oi
为适当的函数调用生成内部函数。
-
/Ot
(默认设置)告诉编译器优先考虑速度优化而不是大小优化。
-
/Oy
抑制在调用堆栈上创建帧指针以加快函数调用速度。
-
/Ob2
扩展函数标记为inline
or __inline
以及编译器选择的任何其他函数
/G 选项是:
-
/GF
(消除重复字符串)
-
/Gy
(启用功能级链接)
The /G
选项并不是严格的优化,因此我们可以/Og
and /Ot
, plus #pragma intrinsic
(对于列表中的第 2 项),#pragma auto_inline
(对于列表中的第 5 项)并且可能#pragma inline_depth
. See 微软文档文章优化编译指示和关键字 https://learn.microsoft.com/en-us/cpp/build/reference/optimization-pragmas-and-keywords?view=vs-2017
也可以看看Microsoft Docs 文章 /Ox(启用最快速度优化) https://learn.microsoft.com/en-us/cpp/build/reference/ox-full-optimization?view=vs-2017这表明/Ox
选项类似于/O2
选项,但它不会打开/GF
nor /Gy
。另请参阅/Ox 和 /O2 编译器选项有什么区别? https://stackoverflow.com/questions/5063334/what-is-the-difference-between-the-ox-and-o2-compiler-options
微软文档文章按类别列出的编译器选项 https://learn.microsoft.com/en-us/cpp/build/reference/compiler-options-listed-by-category?view=vs-2017有一个编译器选项列表,其中包含其含义的链接。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)