アプリケーションを最適化するための推奨するパフォーマンス拡張手法は、いくつかのフェーズからなります。パフォーマンス問題を識別する場合、次に示された順に一般的なフェーズを確認してください。
次の図は、手法のフェーズと関連性、および各フェーズで推奨するツールを示しています。
パフォーマンス手法の要約は次のとおりです。
変更はできるだけ細かく、測定はできるだけ多く行う。
これ以上最適化を行っても効果がないと判断した場合、他にパフォーマンス問題がなければ、最適化を終了する。
ツールを使用して、パフォーマンスのボトルネックが発生している場所を測定します。正しい解析ツールを使用すると、他の段階で導入された実装の変更や向上を測定するための客観的なデータセット、およびベースとなる基準が提供されます。
データがアプリケーションのパフォーマンスに関する期待値を満たしているかどうかを判断します。期待値を満たしていない場合、一度に調べるパフォーマンス問題を 1 つに制限します。修正する範囲を制限することは最適化を効率的に行うために重要です。
ほとんどの場合、最初に hotspot を解決することで最良の結果が得られます。hotspot は、たいてい過度のアクティビティーや遅延の原因であるため、hotspot を解決することで、他のパフォーマンス問題も明らかになります。
解析フェーズと同じように、作業の範囲を制限します。処理している 1 つの問題領域の選択肢を作成することに専念し、問題を解決するためのツールと手法を識別して使用します。例えば、コンパイラーの最適化、インテル® パフォーマンス・ライブラリーのルーチン、または他の最適化 (改良されたメモリー・アクセス・パターン、除算または他の浮動小数点演算の縮小や除去、組み込み関数やアセンブリー・コードを含む再コーディング、その他の手法) を使用します。
コンパイラーおよびソースレベルの最適化を行う場合、次の手法を示されている順に使用します。
利用可能なコンパイラー・オプションを使用します。これは、最も移植性が高く、最適化にほとんど影響しない手法です。
ソースに埋め込まれるコンパイラー宣言子を使用します。この手法は、コードに 1 つの行を追加するので、コンパイラーおよびソースレベルの最適化にあまり影響せず、(オプションで) コンパイラーによって無視できます。
手動で最適化を行います。
最適化で推奨される手法は、利用可能なコンパイラーの組み込み関数を使用することです。組み込み関数は、通常、_mm_prefetch のように関数名が下線 (_) で始まる単一目的の小さなビルトイン・ライブラリー・ルーチンです。
組み込み関数が利用できない場合、手動で最適化を適用してみてください。高水準言語およびアセンブラーのどちらの場合も、手動の最適化は、より時間がかかり、よりエラーが発生しやすく、移植性が低く、将来コンパイラーで利用可能になる最適化との間で問題が発生する可能性も高くなります。
前のフェーズと同じように、実装の範囲を制限します。変更は細かく行います。一度に多くの問題を処理しようとすると、目的が定まらず、拡張の有効性を効率的にテストできなくなります。
最も簡単な拡張は、一般的なコンパイラーの最適化を有効にすることです。ライブラリーを使用することで拡張が可能なアプリケーションの場合は、インテル® パフォーマンス・ライブラリーのルーチンを実装することを考慮してください。実装する場合、インターフェイスのコーディングが必要になります。
© 1996-2010 Intel Corporation. 無断での引用、転載を禁じます。