IPO についての一般的な最適化ガイドラインを示します。
大規模な IPO コンパイルは、他のコンパイラーの最適化フェーズの内部制限を引き起こすことがあります。
C++ アプリケーションでは、IPO と PGO を組み合わせることが重要なポイントです。-O3、-ipo、-prof-use (Linux* および Mac OS* X) または /O3、/Qipo、/Qprof-use (Windows*) オプションを使用することで、大幅にパフォーマンスが向上します。
C++ のコンパイルはデフォルトで内部ファイルのインライン展開を行うため、IPO は C++ よりも C でより効果があります。
プログラム全体の解析を行うための十分な中間言語 (IR) カバレッジを持たないアプリケーションは、完全な IR 情報を持つアプリケーションに比べると、最適化は十分に行われません。
一般的なガイドラインに加えて、IPO を使用するときに回避するべき作業があります。次にその回避する作業を示します。
異なるコンパイラーでアプリケーション用に生成された擬似オブジェクト・ファイルを使用して、IPO コンパイルのリンクフェーズを行わないでください。インテル® コンパイラーは、別のコンパイラーで生成された擬似オブジェクト・ファイルで最適化の機会を検証することはできません。
擬似ファイルが -prof-use (Linux および Mac OS X)、/Qprof-use (Windows) オプションを使用してコンパイルされた場合を除いて、-prof-use (Linux および Mac OS X)、/Qprof-use (Windows) オプションを使用して擬似ファイルをリンクしないでください。
makefile を更新して、スクリプトから IPO を使用する際に適切なインテル・リンカーを呼び出してください。Linux および Mac OS X の場合、ld のインスタンスをすべて xlid に置換してください。Windows の場合は、link のインスタンスをすべて xilink に置換してください。
makefile を更新して、適切なインテルのアーカイバーを呼び出してください。ar のインスタンスをすべて xiar に置換してください。