演習 1.3: パフォーマンス・ボトルネックの特定

演習 1.3 を始める前に、『演習 1.2 パフォーマンス・データとカバレッジ・データの収集』を終了しておく必要があります。

パフォーマンス・ボトルネックは、コード内で処理がスローダウンまた は停止している領域のことです。ここでは、「パフォーマンス・コール・グラフ」ビューを 使用して、ソート・プログラム内のボトルネックを識別する手順で 行います。

: 行レベルのカバレッジ・データを収集するオーバーヘッドは 、ユーザーの収集するパフォーマンス・データを変更する可能性があります。ここに記述されている結果と同様の結果が得られ ない場合は、プロファイル作成を 1 度実行してパフォーマンス ・データを収集し、もう 1 度プロファイル作成を実行してカバ レッジ・データを収集します。ご使用のプログラムのプロファイルを作成する場合には、このことを覚えておいてください。

ボトルネックを検出するには、以下を実行します:

  1. プロファイル・モニターで「実行時間分析」プロファイル・リソース を右クリックし、次に「アプリケーションから開く」>「パフォーマンス ・コール・グラフ」をクリックします。

    パフォーマンス・コール・グラフのスクリーン・ショット。ここに示されている情報については、付属のテキストを参照してください。

    「パフォーマンス・コール・グラフ」ビューには、 デフォルトで次の情報が表示されます:

    ヒント: ノードを右クリックするとメニューが表示され、 そのメニューから、ノードとその子孫 (サブツリー) に焦点を 当てて表示したり、他の方法で表示を操作したりすることができます。 これらのメニュー・コマンドを使用することで、小さなアプリケーション でも大量に収集されるデータを単純化することができます。

    コール・グラフに焦点を当てる場合に使用できる「フィルター」、「サブツリー」、および「展開/縮小」コマンドが表示されるポップアップ・メニュー

  2. グラフの上部に位置する「強調表示」フィールドで 、「ルートの最大パス」が選択されているこ とに注目してください。

    「ルートの最大パス」の強調表示は、 現在実行されているアプリケーションで、最も時間がかかる呼び出し経路 を 1 つ示します。 具体的には、コール・グラフの表示が次の方法で変更されます。

  3. コール・グラフには、バブル・ソート・アルゴリズムを 表す bsort メソッドもあることに注目してください。線の太さから 判断して、この実行処理では qsort よりも bsort のほうが パフォーマンスが良いことが分かります。

更なるパフォーマンス情報の取得

プラットフォームにおける「パフォーマンス・コール・グラフ」ビューと その他のビューの両方から、アプリケーションのパフォーマンスに関する更なる詳細情報を入手することができます。

更なるパフォーマンス・データを取得する場合は、次の手順に従ってください。

  1. Sort.quick がどのように実行されているかを把握するために、 カーソルを Sort.quick ノードの上に置く。 ツールチップがメソッドの統計と共に表示されます。このメソッドは 多くの呼び出しを行うことに注目してください。

  2. メソッドに関するデータを詳細なグラフィックで表示するために、 ノードをダブルクリックします。「メソッド詳細」ビューが開きます。

    Sort.quick メソッドのデータが表示されている「メソッド詳細」ビュー

  3. 「メソッド詳細」ビューで、 「呼び出し元」ペインを参照します。 このメソッドが Sort.Qsort から呼び出されるのは 1 回だけですが、 このメソッド自身が自分を何千回も呼び出すことに注目してください。 これ自体には特に問題はありません。通常、クイック・ソートは 大量の再帰処理を行います。 ただし、呼び出しに掛かる時間が比較的長い場合には、 問題が生じている可能性があります。
  4. すべてのメソッドについて、ソート可能なリストを調べるには、次の手順に従ってください。
    1. 「実行時間分析」プロファイル・リソースを右クリックし、「アプリケーションから開く」 > 「実行統計 (Execution Statistics)」 を選択します。
    2. 「実行統計 (Execution Statistics)」ビュー

    3. 「実行統計 (Execution Statistics)」ビューで、「メソッド・レベル情報」ボタン () をクリックします。

      メソッド・レベル情報を表示する「実行統計 (Execution Statistics)」ビュー

    4. カラム・ヘッダー「基本時間」をクリックすると、現在の実行で 各メソッドにかかった時間の順で、メソッドをソートします。 quick の方がバブル・ソート・メソッ ド bsort よりも大幅に時間がかかることが分かります。

      基本時間でソートされた「実行統計 (Execution Statistics)」ビュー

これで、quick メソッドが予想以上に 時間がかかるということが確認されました。 また、「パフォーマンス・コール・グラフ」ビューと 「メソッド詳細」ビューからパフォーマンス情報を取得する方法についても紹介しました。 この情報は、コードを検査して変更を加える必要がある場所を特定する場合に役立ちます。

しかし、コードを検査する前に、そのコード内に実行され なかったメソッドがなかったかを把握しておくことも必要です。 この検査から、アプリケーションのスコープがよく分かり、またこの プログラムに含まれている可能性がある代替パスがあるかどうかも分かります。

これで、『演習 1.4: コード・カバレッジの検査』へ進む準備ができました。 ここでは実行されていないメソッドや代替パスがないか判別することができます。

フィードバック
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.