プロファイルに基づく最適化 (PGO) を行うと、アプリケーションで最も頻繁に実行される領域に関する情報がコンパイラーに伝えられます。この領域を知ることで、コンパイラーは、より慎重かつ明確にアプリケーションの最適化を行います。例えば、PGO を使用すると、コンパイラーは関数のインライン展開に関して的確な判断が下せる場合が多くなるため、プロシージャー間の最適化の効率が向上します。
「基本的な PGO オプション」および「Microsoft* Visual C++* .NET プロジェクトでの PGO の使用」を参照してください。
PGO を使用する場合の最初のフェーズは、プログラムのインストルメントです。このフェーズでは、コンパイラーはソースコードおよび特別なコードからインストルメント済みプログラムを作成します。
インストルメント済みコードを実行するたびにインストルメント済みプログラムは動的情報ファイルを生成します。
もう一度コンパイルすると、生成した動的情報がマージされて 1 個のサマリーファイルができます。このプロファイル情報を使用して、コンパイラーはプログラム内で最も頻繁に使用するパスの実行の最適化を図ります。
サイズや速度に注目する他の最適化と異なり、IPO および PGO の結果はばらつきます。これは、各プログラムは異なるプロファイルと異なる最適化の機会を持つためです。このガイドラインは、IPO および PGO を使用することにより利点が得られるどうかを判断するのに役立ちます。最適化の原理を理解し、ソースコードの独自な特性を知っておく必要があります。
インテル(R) コンパイラーの PGO 機能は、次のように性能向上を図ります。