/Oi (組み込み関数の生成)
一部の関数呼び出しを組み込み関数などの特別な関数形式に置き換え、アプリケーションの実行速度を向上させます。
/Oi[-]
解説
組み込み関数を使うと、関数呼び出しのオーバーヘッドがなくなるためプログラムの実行速度は向上しますが、コードが追加されるため生成されるプログラムのサイズが大きくなります。
組み込み形式を持つ関数の詳細については、「intrinsic」を参照してください。
/Oi は、コンパイラに対して一部の関数呼び出しを組み込み関数に置き換えるように要求するだけです。コンパイラは、関数を呼び出した方が高いパフォーマンスが得られる場合は関数を呼び出すことがあります (組み込み関数には置き換えません)。
x86 固有の仕様→
組み込み形式の浮動小数点関数は入力値をチェックしないため、入力値の範囲が限定されます。また、同名のライブラリ ルーチン形式の浮動小数点関数とは例外処理および境界条件が異なります。浮動小数点関数を真の組み込み形式に置き換えると、IEEE 例外処理が行われなくなります。また、_matherr と errno の機能も失われるため、ANSI 規格に準拠しなくなります。ただし、浮動小数点を多用するプログラムの実行速度は確実に向上します。現実には、プログラムが ANSI 規格に準拠していなくてもほとんど問題はありません。
Za コンパイラ オプションでは、真の組み込み形式の浮動小数点関数は生成されません。浮動小数点関数はライブラリ ルーチンとして生成されます。これらのライブラリ ルーチンでは、引数はプログラム スタックにプッシュされずに、数値演算コプロセッサに直接渡されます。
← x86 固有の仕様
intrinsic で組み込み関数を作成するか、function (C/C++) で関数を明示的に呼び出すこともできます。
Visual Studio 開発環境でこのコンパイラ オプションを設定するには
プロジェクトの [プロパティ ページ] ダイアログ ボックスを開きます。詳細については、「方法 : プロジェクト プロパティ ページを開く」を参照してください。
[C/C++] フォルダーをクリックします。
[最適化] プロパティ ページをクリックします。
[組み込み関数を使用する] プロパティを変更します。
このコンパイラ オプションをコードから設定するには
- EnableIntrinsicFunctions を参照してください。