エクササイズ 1.3: パフォーマンス・ボトルネックの識別

エクササイズ 1.3 を始める前に、『エクサ サイズ 1.2 パフォーマンス・データとカバレッジ・データの収集』を完了してください。

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

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

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

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

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

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

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

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

    「ルートの最大パス」が強調表示されて いることにより、アプリケーションの現在の実行で最も時間の掛かる呼び出 しパス (1 つ) が示されます。 特に、コール・グラフの表示は次のように変更されます。

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

追加パフォーマンス情報の取得

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

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

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

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

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

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

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

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

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

『エクササイズ 1.4: コード・カバレッジの検査』に進み、 実行されていないメソッドや代替パスがあるかどうかを判断してください。

ご利用条件 | フィードバック
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.