3

msdnによると、

/O2 (最大速度)

と同等です

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

msdnによると、次のプラグマ

#pragma optimize( "[optimization-list]", {on | off} )

/O コンパイラ オプションと同じ文字を "optimization-list" で使用します。プラグマで使用できる文字は次のとおりです。

  • g -グローバル最適化を有効にします。
  • p -浮動小数点の一貫性を向上させます。
  • s または t -マシン コードの短いシーケンスまたは速いシーケンスを指定します。
  • y -プログラム スタックでフレーム ポインターを生成します。

/O2 と同じ意味を持つには、どれを使用すればよいですか?

4

2 に答える 2

3

MicrosoftDocsの記事/O1、/ O2(サイズの最小化、速度の最大化)は、VisualStudio2017について次のように述べています。

/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

MicrosoftDocsの記事/Oオプション(コードの最適化)から:

  1. /Ogグローバルな最適化を可能にします
  2. /Oi適切な関数呼び出しのための組み込み関数を生成します。
  3. /Ot(デフォルト設定)は、サイズの最適化よりも速度の最適化を優先するようにコンパイラーに指示します。
  4. /Oyより迅速な関数呼び出しのために、呼び出しスタックでのフレームポインタの作成を抑制します。
  5. /Ob2inlineorとしてマークされた__inline関数、およびコンパイラが選択するその他の関数を展開します

/Gオプションは次のとおりです。

  1. /GF(重複する文字列を削除します)
  2. /Gy(機能レベルのリンクを有効にする)

オプションは厳密には/G最適化ではないため、/Ogand /Ot、plus #pragma intrinsic(リストの項目2の場合)、#pragma auto_inline(リストの項目5の場合)、および場合によっては。が残り#pragma inline_depthます。MicrosoftDocsの記事最適化プラグマとキーワードを参照してください

MicrosoftDocsの記事/Ox(Enable Most Speed Optimizations)も参照してください。これは、オプションがオンにならないことと、がオンにならないことを除いて、/Oxオプションと同様であることを示しています。同様に参照してください/Oxと/O2コンパイラオプションの違いは何ですか?/O2/GF/Gy

カテゴリ別にリストされているMicrosoftDocsの記事コンパイラオプションには、コンパイラオプションのリストとその意味に関するリンクがあります。

于 2010-09-23T16:40:50.380 に答える
0

直接の同等物はないと思います。

#pragma optimise("gty", off)

プロジェクト レベルでの /O2 の影響のほとんどは、ファイルに対してキャンセルする必要がありますが、

#pragma optimise("gty", on)

「コンパイラ スイッチを使用する」というだけなので、/O2 または /Og /Ot /Oy が必要です。

/G 部分のプラグマが見つからず、最適化のようなものを実行します。

于 2013-10-16T05:30:40.863 に答える