JProfiler ヘルプ

スナップショットの比較

現在のアプリケーションのランタイム特性を以前のバージョンと比較することは、パフォーマンスのリグレッションを防ぐための一般的な品質保証手法です。また、単一のプロファイリングセッション内でパフォーマンス問題を解決する際にも役立ちます。たとえば、2つの異なるユースケースを比較して、なぜ一方が他方より遅いのかを調べたい場合などです。いずれの場合も、関心のあるデータを記録したスナップショットを保存し、JProfilerのスナップショット比較機能を利用します。これは、メニューから Session→Compare Snapshots in New Window を選択するか、スタートセンターの Open Snapshots タブにある Compare Multiple Snapshots ボタンをクリックして実行します。

スナップショットの選択

比較は、独立したトップレベルウィンドウで作成・表示されます。まず、スナップショットセレクターで複数のスナップショットを追加します。その後、リストに表示されたスナップショットの中から2つ以上を選択し、比較ツールバーのボタンをクリックして比較を作成できます。リスト内のスナップショットファイルの順序は重要で、リストの下にあるスナップショットほど後のタイミングで記録されたものとみなされます。スナップショットの並び替えは手動だけでなく、名前や作成日時でソートすることも可能です。

JProfilerのメインウィンドウのビューとは異なり、比較ビューではパラメーターが固定されており、上部に表示されます(パラメーターをその場で調整できるドロップダウンリストはありません)。すべての比較では、比較に必要なパラメーターを収集するウィザードが表示され、同じパラメーターで何度でも同じ比較を実行できます。ウィザードは前回の実行時のパラメーターを記憶しているため、複数のスナップショットセットを比較する場合でも設定を繰り返す必要はありません。いつでも Finish ボタンでウィザードをスキップしたり、インデックス内のステップをクリックして別のステップにジャンプしたりできます。

比較がアクティブな場合、解析されたスナップショットには番号のプレフィックスが付いて表示されます。2つのスナップショットを使った比較では、表示される差分は「スナップショット2の測定値」から「スナップショット1の測定値」を引いたものです。

CPU比較では、同じスナップショットを1番目と2番目のスナップショットとして指定し、ウィザードで異なるスレッドやスレッドグループを選択することもできます。

テーブルによる比較

最もシンプルな比較は「Objects」メモリ比較です。これは「All objects」「Recorded objects」またはヒープウォーカーの「Classes」ビューのデータを比較できます。比較テーブルの各カラムにはインスタンス数やサイズの差分が表示されますが、Instances Count カラムのみ、増加は赤色で右方向、減少は緑色で左方向に描画される双方向のバーチャートが表示されます。

ビュー設定ダイアログで、このバーチャートを絶対値で表示するか、パーセンテージで表示するかを選択できます。もう一方の値はカッコ内に表示されます。この設定はカラムのソート方法にも影響します。

最初のデータカラムの測定値は「主な指標(primary measure)」と呼ばれ、ビュー設定でデフォルトのインスタンス数からシャローサイズ(shallow size)に切り替えることもできます。

テーブルのコンテキストメニューから、同じ比較パラメーターと選択したクラスで他のメモリ比較にすばやくアクセスできます。

Objects比較と同様に、CPUホットスポット、プローブホットスポット、割り当てホットスポットの比較も同様のテーブルで表示されます。

ツリーによる比較

CPU呼び出しツリー、割り当て呼び出しツリー、プローブ呼び出しツリーのそれぞれについて、選択したスナップショット間の差分を示す別のツリーを計算できます。通常の呼び出しツリービューとは異なり、インラインのバーダイアグラムは増加の場合は赤、減少の場合は緑で変化量を表示します。

作業内容によっては、両方のスナップショットファイルに存在し、かつ一方から他方に変化した呼び出しスタックのみを表示した方が分かりやすい場合があります。この動作はビュー設定ダイアログで変更できます。

CPUおよびプローブ呼び出しツリーの比較では、合計時間ではなく平均時間を比較することも有用です。これはウィザードの「View parameters」ステップで選択できます。

テレメトリー比較

テレメトリー比較では、2つ以上のスナップショットを同時に比較できます。スナップショットセレクターで何も選択しなかった場合、ウィザードはすべてのスナップショットを比較対象とみなします。テレメトリー比較には時間軸はなく、選択されたスナップショットが番号付きで順序軸(x軸)として表示されます。ツールチップにはスナップショットのフルネームが表示されます。

比較では各スナップショットから1つの数値を抽出します。テレメトリーデータは時間分解能を持つため、抽出方法はいくつかあります。ウィザードの「comparison type」ステップで、スナップショット保存時の値を使う、最大値を計算する、または選択したブックマーク時点の値を取得する、というオプションを選べます。