「パフォーマンス・コール・グラフ」ビューと「メソッド詳細」ビューを使用すると、アプリケーションのどの部分に最も時間がかかっているかを特定できます。 次に、それらの時間がかかっているエリアの効率を高めることができるかどうかを調べます。 アプリケーションのコードを分析する際は、非効率的なパフォーマンスの原因となっている 最もよくあるコード・エラーを判別する必要があります。
不要な計算: プログラムを修正してアルゴリズムを改良したり、データを変更したりすると、初期のバージョンでは必要だったコードが不要になることがあります。このようなコードが削除されないまま残ってしまうことがあります。 このような状態では、多くのプログラムが、使用されることのない結果を出すための計算を実行することになります。 この不要コードで消費される処理時間が、ボトルネックを発生させる原因になります。
その他、一般的に不要な計算として、必要でないにもかかわらず自動で、またはデフォルトの設定で実行される計算があります。たとえば、プログラムのシャットダウン中の不要なデータ構造の開放や、ユーザーの利用がない状態での、ワークステーションとの接続の開始などを行うアプリケーションがあります。 パフォーマンスのプロファイルを作成すると、不要コードで消費される時間を確認できます。 計算結果が使用されていないと確認できれば、その計算を行うコードを削除することができます。
時期尚早の計算: 計算結果が必要になる前に実行されるすべての計算は、ボトルネックの原因になる可能性があります。 たとえば、ユーザーが要求していない数値リストの並べ替えなどは実行する理由がないと考えられます。 パフォーマンス・データでは、計算を延期できるかどうかをユーザーに報告することはできません。ただし、計算コストの報告は可能なので、ユーザーはその報告に基づいて、計算を先送りするかどうかを判断できます。
不必要な再計算: プログラムでは、必要な値をキャッシュして再利用せずに、再度計算することがあります。 たとえば、固定文字列の長さを判断するための計算がループ内に埋め込まれている場合に、不要な計算が行われます。文字列の長さが何度も計算され、そのたびに同じ値が取得されます。 パフォーマンス・データでは、再計算がどこで発生しているかをユーザーに報告できます。このため、ユーザーは計算が 1 回行われた後にその値を保存できます。
非効率的な計算: 最適ではないアルゴリズムやデータ構造レイアウトを選択すると、プログラムで余分な作業が発生します。 この場合、データ容量は最初は小さいため、パフォーマンスは許容範囲内に収まります。しかしより大きなデータやより複雑なデータを使用すると、対応できないことが判明します。パフォーマンスのプロファイル作成では、異なるデータ・サイズにおけるそれぞれの計算コストをユーザーに報告できます。そのため、より大きなデータを使用した場合に問題が発生するかどうかを予測でき、 より速くジョブを終了できる別のアルゴリズムとデータ構造を使用できます。
メモリー・リークとスレッド・ボトルネックもパフォーマンス低下の原因になります。 これらの問題を解決するためのデータを収集するには、 「リークの検出」プロファイル・セットと 「スレッド分析」プロファイル・セットを使用します。 リーク検出データをその他のランタイム分析データと同時に収集することはできません。