/Oi (組み込み関数の生成)
一部の関数呼び出しを、組み込み関数、またはそれ以外でアプリケーションの実行時間の短縮に役立つ特殊な形式の関数に置き換えます。
構文
/Oi[-]
解説
組み込み関数を使用するプログラムは、関数呼び出しのオーバーヘッドがなくなるために実行速度は向上しますが、作成されたコードが追加されるためサイズが大きくなる可能性があります。
組み込み形式を持つ関数について詳しくは、intrinsic に関する記事をご覧ください。
/Oi は、一部の関数呼び出しを組み込み関数に置き換えるようコンパイラに要求するだけです。コンパイラは、関数の方が優れたパフォーマンスを得られる場合、関数を呼び出すことがあります (関数呼び出しを組み込み関数に置き換えません)。
x86 Specific
組み込み型の浮動小数点関数は、入力値に対して特別なチェックを実行しないので、動作する入力範囲が制限されており、例外処理と境界条件は同じ名前のライブラリ ルーチンと異なります。 真の組み込み形式を使用すると、IEEE の例外処理が失われ、_matherr
と errno
が機能しなくなります。後者は、ANSI に準拠しなくなることを意味します。 ただし、組み込み形式を使用すると、浮動小数点数を多用するプログラムを大幅に高速化できます。また、多くのプログラムでは、準拠の問題には実用的な価値はほとんどありません。
Za コンパイラ オプションを使用して、本物の組み込み浮動小数点オプションの生成をオーバーライドできます。 浮動小数点関数はライブラリ ルーチンとして生成されます。これらのライブラリ ルーチンでは、引数はプログラム スタックにプッシュされずに、数値演算コプロセッサに直接渡されます。
End x86 固有の仕様
intrinsic を使って組み込み関数を作成したり、function (C/C++) を使って関数呼び出しを明示的に強制したりすることもできます。
Visual Studio 開発環境でこのコンパイラ オプションを設定するには
プロジェクトの [プロパティ ページ] ダイアログ ボックスを開きます。 詳細については、Visual Studio での C++ コンパイラとビルド プロパティの設定に関する記事を参照してください。
[構成プロパティ]>[C/C++]>[最適化] プロパティ ページを選択します。
[組み込み関数を使用する] プロパティを変更します。
このコンパイラ オプションをコードから設定するには
- 以下を参照してください。EnableIntrinsicFunctions
関連項目
/O オプション (コードの最適化)
MSVC コンパイラ オプション
MSVC コンパイラ コマンド ラインの構文
コンパイラの組み込み