次の方法で共有


炎グラフを使用してホット パスを識別する (C#、Visual Basic、C++、F#)

CPU 使用率とインストルメンテーション用の Visual Studio プロファイリング ツールには、Flame Graph ビューが含まれます。 Flame Graph は、呼び出しツリーの視覚化を表示することで、コード内 ホット パスを識別するのに役立ちます。 ホット パスは、CPU を最も多く使用している関数の呼び出し履歴であり、多くの場合、パフォーマンスの最適化の可能性を探すのに適しています。 このグラフには、アプリケーションで時間が費やされている場所の視覚的な概要が示され、特定のノードをクリックしてさらに詳しく調べることができます。

コンテキスト メニューが表示された Flame Graph を示すスクリーンショット。

炎グラフを使用してパフォーマンスを向上させる方法を示すチュートリアルについては、「ケース スタディ: コードの最適化に関する初心者向けガイド」を参照してください。 CPU プロファイラーの詳細については、「CPU プロファイリングを使用したパフォーマンスの分析」を参照してください。

ホット パスを調査する

フレーム グラフ ビューは、.diagession レポートの詳細ビューにあります。

  1. CPU 使用率ツールまたはインストルメンテーション ツールを使用して、プロファイリング セッション を開始します。

  2. プロファイル セッションを停止し、レポートが読み込まれたら、[詳細を開く] を選択します。

    [詳細を開く] が選択されていることを示すスクリーンショット。 を開く詳細ビュー

  3. [現在のビュー] ドロップダウンの選択で [フレーム グラフ] を選択します。

    フレーム グラフ ビューが選択されていることを示すスクリーンショット。

    [炎グラフ] ビューが表示されます。

    Flame Graph の概要が表示されているスクリーンショット。

    ホット パスは、呼び出しツリーを下に見ると、最も多くの CPU または最も多くの時間を使用するコード パスです。

    既定では、Flame Graph に表示されるデータは、データ収集期間の 呼び出しツリー ビューに示されているのと同じデータを表します。 具体的には、CPU 使用率の場合は、合計 CPU 値が表示されます。 この値は包括的であるため、関数の呼び出しによって使用される CPU 使用率 (つまり、CPU 計算時間) と、関数によって呼び出されるその他の関数が含まれます。 同様に、インストルメンテーションの場合、グラフには、呼び出しツリー ビューの Total 列と同等の値が表示されます。

    ただし、ノードを選択すると、選択したノードが新しいベースラインになり、フレーム グラフの幅の 100% が使用されます。 これにより、複雑な呼び出しツリーをより適切に視覚化し、長い名前が切り捨てられたり非表示になったりしたときに表示したりすることができます。 より複雑な呼び出しツリーを示す炎グラフの例を次に示します。

    複雑な呼び出しツリーの Flame Graph を示すスクリーンショット。

    ノードの詳細を表示するには、ノードを選択します。

    [ズームのリセット] を選択して、既定のビューに戻ります。

    また、プロファイル レポート内のさまざまなビューに移動するには、ノードを選択し、コンテキスト メニューから 呼び出しツリーのビュー などのオプションを選択します。

    呼び出しツリーで表示する Flame Graph オプションを示すスクリーンショット。

炎グラフを反転する

既定では、ツールのフレームグラフは逆さま、またはのアイシクルチャートとして表示されます。この場合、y軸はスタックの深さを上の0から下方向にカウントします。

標準のフレームチャートレイアウトを表示するには、[フリップフレームグラフ]をクリックします。

フリップ フレーム グラフが選択されていることを示すスクリーンショット。

複雑な炎グラフの場合は、特定の要素を選択して視覚化をズームできます。

Flame Graph ビューでは、マウスでノードをクリックするか、キーボードを使用して移動できます。 さらに、次のキーボード ショートカットがサポートされています。

キーボード ショートカット コマンド
タブ 任意のノードに移動する
上/下矢印 ノードの親または子へ移動
右/左矢印 スタック上のノードのピアにアクセスする
入力する 拡大 (選択)
逃げる ズーム アウト