デバッグが完了したら、標本アナライザを使って、プログラムのパフォーマンスを評価し、メモリーを割り当てるなどの調整作業を行います。標本アナライザでアプリケーションのパフォーマンスプロファイルを測定すると、結果がグラフィック表示されます。この結果を元に、パフォーマンスを向上させるための方策を立ててください。標本アナライザは、特殊なデータ収集手法によって、コンパイルされたプログラムをすべて解析することができます。したがって、コンパイルとリンクの作業を繰り返す必要がありません。
次に、標本アナライザで解析することができるパフォーマンスデータを紹介します。
ユーザー時間 - ユーザープログラムの命令の実行に費やされた時間
フォルト時間 - テキストページフォルト処理、データページフォルト処理などのメモリーアクティビティの実行に費やされた時間
入出力時間 - オペレーティングシステムが、ディスクやテープへの書き込みなど、入出力処理待ちに費やした時間
システム時間 - オペレーティングシステムがシステムコールの実行に費やした時間
トラップ時間 - トラップ (自動例外またはメモリーフォルト) の実行に費やした時間
ロック待ち時間 - 軽量プロセスロック待ちに費やした時間
休眠時間 - プログラムが呼び起こし信号待ちで、非アクティブになっていた時間
中断時間 - 一時的に停止していた時間 (ブレークポイントでデバッガが使用した時間やコレクタがデータの収集に使用した時間など)
アイドル時間 - システムがビジー状態の間の実行待ち時間
関数サイズ - プログラム内の関数のサイズ
モジュールサイズ - プログラム内のモジュールのサイズ
セグメントサイズ - プログラム内のセグメントのサイズ
メモリー使用率 - メモリーページ参照および変更データ
資源使用率 - プログラムが使用したシステム資源に関する情報。メジャーページフォルト、マイナーページフォルト、プロセスのスワップ、入出力ブロック数、メッセージの送受信数、処理された信号の数、自発的・非自発的なコンテキストの切り替え件数、システムコール件数、入出力文字数、作業用メモリーページ数など
デバッガは、標本アナライザによるデータ収集処理の前段階として機能します。プログラムの実行中に、dbx またはデバッガから標本コレクタのウィンドウを開いて、データ収集処理を制御することができます。ブレークポイント間のデータだけを収集したり、プログラムの特定の部分のデータだけを収集することもできます。データ収集プログラムの実行のことを「実験」、コレクタが作成したデータファイルのことを「実験記録」と呼びます。実験記録を読み込んだら、標本アナライザで、パフォーマンスの問題点を特定します。
パフォーマンスのチューニングと実行時検査は、互いに排他的な処理です。同時には実行しないでください。同時に実行すると、チューニングに関する情報に悪影響が出る場合があります。
パフォーマンス上の問題が発生している部分に的を絞って、プログラムの動作を仮定したテストを行います。パフォーマンスが向上するようにプログラムを再構築したい場合は、標本アナライザでマップファイルを生成します。このマップファイルには、プログラムのアドレス空間に関数を読み込む順序が記述されています。場合によっては、マップファイルの指示に従って、リンカーが関数をメモリーに再マッピングすることもあります。この場合、パフォーマンスは自動的に改善されます。
パフォーマンス解析ツールでは、コマンドのタイミングの解析からプログラムの文単位の解析まで、広範囲に及ぶ解析処理を行うことができます。フラットプロファイルはパフォーマンスの改善に役立つ重要なデータを提供しますが、そのデータだけでは、改善の必要がある個所を正確に特定できないことがあります。この場合は、コールグラフプロファイルを使用して、より詳しい解析データを取得します。このデータから、呼び出し元のモジュールと、呼び出し先のモジュールを特定することができます。