次の方法で共有


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

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

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

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

ホット パスを調査する

Flame Graph ビューは、 .diagession レポートの詳細ビューにあります。

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

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

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

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

    [フレーム グラフ] ビューが選択されているスクリーンショット。

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

    フレーム グラフの概要が表示されているスクリーンショット。

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

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

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

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

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

    ズームを選択して、既定のビューに戻ります。

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

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

炎グラフを反転する

既定では、ツールのフレーム グラフは逆さまで表示されるか、 のグラフとして表示されます y 軸は、上の 0 から下に積み重ねの深さをカウントします。

[Flip Flame Graph]\(フレーム グラフ\) クリックすると、標準のフレーム チャート レイアウト表示できます。

[フリップ フレーム グラフ] が選択されているスクリーンショット。

複雑なフレーム グラフでは、特定の要素を選択することで視覚エフェクトをズームできます。

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

キーボード ショートカット コマンド
Tab キー 任意のノードへ移動
上または下方向キー ノードの親または子へ移動
右または左方向キー スタック上のノードのピアに移動
Enter 拡大 (選択)
エスケープ特殊文字 縮小