根据msdn,
/ O2(最大化速度)
相当于
/噩/ OI / OT / Oy公司/ OB2 / GS / GF /戈瑞
再次根据msdn,以下编译指示
#pragma optimize(“[optimization-list]”,{on | off})
在其“优化列表”中使用与/ O编译器选项相同的字母。该pragma的可用字母为:
我应该使用哪些与/ O2具有相同的含义?
答案 0 :(得分:3)
The Microsoft Docs article /O1, /O2 (Minimize Size, Maximize Speed)对Visual Studio 2017说:
/ O1和/ O2编译器选项是设置多个选项的快捷方式 一次具体的优化选项。 / O1选项设置 单个优化选项,用于创建最小的代码 大多数情况。 / O2选项设置创建的选项 在大多数情况下最快的代码。 / O2选项是默认选项 发布版本。此表显示了设置的特定选项 by / O1和/ O2:
Option Equivalent to /O1 (Minimize Size) /Og /Os /Oy /Ob2 /GF /Gy /O2 (Maximize Speed) /Og /Oi /Ot /Oy /Ob2 /GF /Gy
From the Microsoft Docs article /O Options (Optimize Code):
/Og
启用全局优化/Oi
为适当的函数调用生成内部函数。/Ot
(默认设置)告诉编译器优先考虑速度优化而不是优化大小。/Oy
禁止在调用堆栈上创建帧指针,以便更快地调用函数。/Ob2
扩展标记为inline
或__inline
的函数以及编译器选择的任何其他函数/ G选项是:
/GF
(消除重复字符串)/Gy
(启用功能级别链接) /G
选项不是严格优化的,因此我们会留下/Og
和/Ot
,加上#pragma intrinsic
(对于列表中的第2项),{{ 1}}(对于列表中的第5项),可能是#pragma auto_inline
。见Microsoft Docs article Optimization Pragmas and Keywords
另请参阅Microsoft Docs article /Ox (Enable Most Speed Optimizations),其中#pragma inline_depth
选项与/Ox
选项类似,但不会启用/O2
或/GF
。另见What is the difference between the /Ox and /O2 compiler options?
The Microsoft Docs article Compiler options listed by category有一个编译器选项列表,其中包含它们的含义链接。
答案 1 :(得分:0)
我认为没有直接的等价物。
#pragma optimize(“gty”,off)
取消一个文件,/ O2在项目级别的大部分影响,但是
#pragma optimize(“gty”,on)
只需说“使用编译器开关”,所以你需要/ O2或/ Og / Ot / Oy。
我找不到/ G部分的编译指示,他们做'优化'就像'事情。