Visual c++ 在VC&x2B+;什么是#pragma等效于/O2编译器选项(优化速度)

Visual c++ 在VC&x2B+;什么是#pragma等效于/O2编译器选项(优化速度),visual-c++,compiler-optimization,Visual C++,Compiler Optimization,根据, /O2(最大速度) 相当于 /Og/Oi/Ot/Oy/Ob2/Gs/GF/Gy 再根据下面的布拉格语 #pragma optimize(“[优化列表]”,{on | off}) 在其“优化列表”中使用与/O编译器选项相同的字母。可用的pragma字母有: g-启用全局优化 p-提高浮点一致性 s或t-指定机器代码的短或快序列 y-在程序堆栈上生成帧指针 我应该使用哪些与/O2具有相同含义?对于Visual Studio 2017: /O1和/O2编译器选项是设置多个 一次完成特定的优

根据,

/O2(最大速度)

相当于

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

再根据下面的布拉格语

#pragma optimize(“[优化列表]”,{on | off})

在其“优化列表”中使用与/O编译器选项相同的字母。可用的pragma字母有:

  • g-启用全局优化
  • p-提高浮点一致性
  • s或t-指定机器代码的短或快序列
  • y-在程序堆栈上生成帧指针
我应该使用哪些与/O2具有相同含义?

对于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
:

  • /Og
    启用全局优化
  • /Oi
    为适当的函数调用生成内部函数
  • /Ot
    (默认设置)告诉编译器偏向于速度优化而不是大小优化
  • /Oy
    禁止在调用堆栈上创建帧指针,以便更快地调用函数
  • /Ob2
    扩展标记为
    inline
    \uu inline
    的函数以及编译器选择的任何其他函数
  • G/G选项包括:

  • /GF
    (消除重复字符串)
  • /Gy
    (启用功能级链接)
  • /G
    选项不是严格的优化,因此留给我们的是
    /Og
    /Ot
    ,加上
    #pragma intrinsic
    (对于列表中的项目2)、
    #pragma auto_inline
    (对于列表中的项目5)以及可能的
    #pragma inline_depth
    。看

    另请参见指示
    /Ox
    选项与
    /O2
    选项类似的选项,只是它不打开
    /GF
    /Gy
    。也看到


    有一个编译器选项列表,其中包含关于它们含义的链接。

    我认为没有直接的等价物

    #pragma optimize(“gty”,关闭)

    对于一个文件,应该取消/O2在项目级别的大部分影响,但是

    #pragma optimize(“gty”,打开)

    只是说“使用编译器开关”,所以需要/O2或/Og/Ot/Oy

    我找不到/G部件的pragmas,它们做了“类似”的优化工作