削除されました。 ローカルとグローバルの最適化、自動レジスタ割り当て、およびループの最適化を提供します。 代わりに、/O1 (サイズの最小化) または /O2 (実行速度の最大化) を使用することをお勧めします。
構文
/Og
解説
/Og は非推奨とされます。 最適化を有効にすると、これらの最適化は既定で有効になるようになっています。 最適化について詳しくは、「/O1、/O2 (サイズの最小化、実行速度の最大化)」または「/Ox (ほとんどの速度の最適化を有効にする)」をご覧ください。
次の最適化は、/Og で使用できます。
ローカルとグローバルでの共通部分式の削除
この最適化では、共通部分式の値が 1 回計算されます。 次の例では、
bとcの値が 3 つの式の間で変わらない場合、コンパイラはb + cの計算を一時変数に代入して、その変数をb + cに使用できます。a = b + c; d = b + c; e = b + c;ローカルの共通部分式の最適化では、コンパイラは、コードの短いセクションで共通部分式を調べます。 グローバルの共通部分式の最適化では、コンパイラは、関数全体で共通部分式を検索します。
自動レジスタ割り当て
この最適化を使用すると、コンパイラは、頻繁に使用される変数と部分式をレジスタに格納できます。
registerキーワードは既定では無視され、/std:c++17以降では診断が行われます。ループの最適化
この最適化は、ループの本体から不変部分式を削除します。 最適なループには、ループの実行ごとに値が変化する式だけが含まれます。 次の例では、式
x + yはループ本体において変化しません。i = -100; while( i < 0 ) { i += x + y; }最適化後の
x + yは、ループが実行されるたびではなく、1 回だけ計算されます。i = -100; t = x + y; while( i < 0 ) { i += t; }ループの最適化は、エイリアシングがないものとコンパイラが想定できるときは、はるかに効果的になります。これは、
__restrict、noalias、またはrestrictを使用して設定します。Note
optimizeプラグマをgオプションと共に使用すると、関数ごとにグローバル最適化を有効または無効にすることができます。
関連情報については、「/Oi (組み込み関数の生成)」と「/Ox (ほとんどの速度の最適化を有効にする)」をご覧ください。
Visual Studio 開発環境でこのコンパイラ オプションを設定するには
プロジェクトの [プロパティ ページ] ダイアログ ボックスを開きます。 詳細については、Visual Studio での C++ コンパイラとビルド プロパティの設定に関する記事を参照してください。
[構成プロパティ]>[C/C++]>[コマンド ライン] プロパティ ページを選択します。
[追加のオプション] ボックスにコンパイラ オプションを入力します。
このコンパイラ オプションをコードから設定するには
- 以下を参照してください。AdditionalOptions