「パフォーマンス呼び出しグラフ (Performance Call Graph)」および「メソッド詳細 (Method Detail)」ビューは、ご使用のアプリケーションで、大半の時間を費やす部分を識別する際に役立ちます。その後に、これらの時間が消費されるエリアをより効率的にすることが可能かどうかを調べることができます。ご使用のアプリケーションのコードを分析する場合、非効率なパフォーマンスの原因となっている最も頻度の高いコーディング・エラーを認識しておくと有用です。
不要な計算: アプリケーションが発展・進化し、アルゴリズムが洗練されたり、 データが変更されたりすると、以前のバージョンでは必要であったコード部分が、使用されなくなったにもかかわらず、 除去されないまま残っていることがあります。このため、多くの大規模プログラムでは、結果が使用されることのない計算が実行されます。このような不要コードで無駄に費やされる時間が原因でボトルネックが発生します。
不要な計算が行われるその他の一般的な例として、計算の必要がない場合であっても、自動的に、またはデフォルトで行われる計算があります。このタイプのボトルネックの例には、プログラムのシャットダウン中に不必要にデータ構造を解放するアプリケーションや、ユーザーがいないのにワークステーションへの接続を開くアプリケーションがあります。不要コードで費やされる時間を調べるため、パフォーマンスをプロファイルすることができます。計算の結果が無用であると判断されたら、そのコードを除去することができます。
早まった計算: 計算の結果が必要になる前に実行された計算はすべて、ボトルネックの原因になる可能性があります。たとえば、ユーザーがソートの実行をまだ要求していない場合、数値のリストをソートする理由がないことがあります。パフォーマンス・データでは、計算を遅らせることができるかどうかは分かりませんが、計算のコストは指示される可能性があり、それを基にユーザーは計算を延期するかどうか判断できます。
不要な再計算: プログラムは、必要な値を、後で使用するためにキャッシュに入れる代わりに、 再計算することがあります。たとえば、定数ストリングの長さを判別する場合、計算がループに組み込まれると、不要な計算が発生することがあります。ストリングの長さが何回も再計算され、その都度、同じ値を取得するという状態になります。パフォーマンス・データにより、どこで再計算が行われているかを判別でき、また 1 つの計算の後に値を保管するかどうかを判断することができます。
非効率な計算: アルゴリズムやデータ構造レイアウトの選択が適切でないと、プログラムの処理が余分に必要になることがあります。小さいデータ・セットが与えられた場合は、初期パフォーマンスが許容できると予想されるものの、 より大きいデータ・セットやより複雑なデータ・セットが提示されたときは、 パフォーマンスが不適切と評価される可能性があります。パフォーマンス・プロファイルによって、さまざまなスケールでの各計算のコストが判別できるため、 より大きいデータ・セットの場合に問題があるかどうかを予測することができます。その後、ジョブをより速く実行させる代替のアルゴリズムおよびデータ構造を使用することができます。
メモリー・リークおよびスレッド・ボトルネックもパフォーマンス低下の原因になる可能性があります。これらの問題を解決するためのデータを収集するには、「メモリー・リーク分析 (Memory Leak Analysis)」および「スレッド分析 (Thread Analysis)」のプロファイル・セットを使用してください。