プロファイルに基づく最適化の概要

プロファイルに基づく最適化(PGO)を行うと、アプリケーションのどの領域が最も頻繁に実行するかがコンパイラに伝えられます。コンパイラはこの領域を知ると、以前のコンパイルのフィードバックを使用して、より慎重にアプリケーションの最適化を行います。例えば、PGO を使用するとコンパイラは関数のインライン化について的確な判断が下せる場合が多くなり、その結果、プロシージャ間の最適化の効率が向上します。

インストルメント済みプログラム

プロファイルに基づく最適化は、ソース・コードとコンパイラの特殊コードからインストルメント済みプログラムを作成します。インストルメント済みコードを実行するたびにインストルメント済みプログラムは動的情報ファイルを生成します。2回目にコンパイルすると、動的情報ファイルはサマリ・ファイルにマージされます。このファイルのプロファイル情報を使用して、コンパイラは、プログラムで最もよく使用されるパスの実行の最適化を試みます。

サイズや速度に厳密に使用されるような他の最適化とは異なり、IPO および PGO の結果は様々です。これは、各プログラムは異なるプロファイルと異なる最適化の機会を持つためです。このガイドラインは、IPO と PGO を使用する利点があるがどうかを決定するのに役立ちます。

PGO で向上するパフォーマンス

インテル® C++ コンパイラのバージョン6.0以降、次のように PGO が向上しました。