デバッガーを使用して、または使用せずに、プロファイリング ツールを実行する (C#、Visual Basic、C++、F#)

Visual Studio には、パフォーマンス測定とプロファイルのための選り抜きのツールが備わっています。 CPU 使用率やメモリ使用量など、一部のツールはデバッガーと使用して実行することも、使用せずに実行することもできます。また、リリース ビルド構成かデバッグ ビルド構成で実行できます。 診断ツール ウィンドウに表示されるツールは、デバッグ セッションの間だけ実行できます。 パフォーマンス プロファイラーに表示されるツールは、デバッガーがなくても実行でき、停止してデータを収集した後で結果を分析します (事後分析用)。

Note

デバッガーなしのパフォーマンス ツールは Windows 7 以降で使用できます。 Windows 8 以降の場合、デバッガー統合プロファイリング ツールを実行する必要があります。

デバッガーなしのパフォーマンス プロファイラーとデバッガーが統合されている診断ツールでは、情報や操作性が異なります。 デバッガー統合ツールには変数値が表示されます。また、ブレークポイントを使用できます。 デバッガーなしツールの場合、エンドユーザー体験に近い結果が得られます。

どのツールと結果を使用するか決めるとき、次のオプションを考慮してください。

  • デバッガー統合ツールと非デバッガー ツールの比較

    • ファイル I/O やネットワーク応答性の問題など、外部パフォーマンス問題は、デバッガー ツールとデバッガーなしツールでは違いがそれほど見えません。
    • デバッガー自体では、例外のインターセプトやモジュール ロード イベントなど、必要なデバッガー操作を行うため、パフォーマンス時間が変わります。
    • パフォーマンス プロファイラーのリリース ビルド パフォーマンスの数値が最も厳密かつ正確です。 デバッガー統合ツールの結果は、他のデバッグ関連測定値と比較するときやデバッガー機能を使用するときに最も役立ちます。
    • .NET オブジェクト割り当てツールなどの一部のツールは、デバッガーなしのシナリオでのみ使用できます。
  • デバッグとリリース ビルドの比較

    • CPU 負荷の高い呼び出しによって引き起こされる問題については、リリース ビルドとデバッグ ビルドでパフォーマンスが相当違います。 リリース ビルドで問題が存在するかどうかを確認してください。
    • デバッグ ビルド中にのみ問題が発生する場合、デバッガーなしツールはおそらく実行する必要がありません。 リリース ビルド問題については、デバッガー統合ツールで提供される機能で問題を特定できるか判断してください。
    • リリース ビルドでは、関数呼び出しと定数のインライン化、不使用のコード パスの除去、変数の保存など、デバッガーでは使用できない方法で最適化が提供されます。 デバッグ ビルドにはそのような最適化がないため、デバッグ ビルドのパフォーマンス数値は正確性で劣ります。

デバッグ中にプロファイリング データを収集する

[デバッグ]>[デバッグ開始] の順に選択するか、F5 キーを押して Visual Studio でデバッグを開始すると、既定では [診断ツール] ウィンドウが表示されます。 手動で開くには、[デバッグ][Windows][診断ツールの表示] の順に選択します。 [診断ツール] ウィンドウには、イベント、プロセス メモリ、CPU 使用率、.NET カウンターに関する情報が表示されます。

Screenshot of the Diagnostic Tools window.

[デバッグ]>[デバッグ開始] の順に選択するか、F5 キーを押して Visual Studio でデバッグを開始すると、既定では [診断ツール] ウィンドウが表示されます。 手動で開くには、[デバッグ][Windows][診断ツールの表示] の順に選択します。 [診断ツール] ウィンドウには、イベント、プロセス メモリ、CPU 使用率に関する情報が表示されます。

Screenshot of the Diagnostic Tools window

  • [メモリ使用量][UI 分析][CPU 使用率] を表示するかどうかを選択するには、ツール バーの [設定] アイコンを使用します。

  • 診断ツールのプロパティ ページに表示されるオプションを増やすには、[設定] ドロップダウン リストで [設定] を選択します。

  • Visual Studio Enterprise を実行している場合は、[ツール]>[オプション]>[IntelliTrace] に移動して IntelliTrace を有効または無効にすることができます。

診断セッションは、デバッグを停止すると終了します。

Note

再起動を使用して起動ページをスキップし、Alt + F2 キーを押すか、[デバッグ] > [パフォーマンス プロファイラー] をクリックして、以前の設定で自動的に実行します。

詳細については、次をご覧ください。

[イベント] タブ

デバッグ セッション中、[診断ツール] ウィンドウの [イベント] タブに、発生した診断イベントが一覧表示されます。 BreakpointFile などのカテゴリ プレフィックスを使用すると、カテゴリの一覧を簡単にスキャンしたり、不要なカテゴリをスキップしたりできます。

[フィルター] ドロップダウン リストを使用して、特定のイベント カテゴリを選択または選択解除して表示または非表示にするイベントをフィルター処理します。

Screenshot of Diagnostic Event filter.

Screenshot of Diagnostic Event filter

イベントの一覧で特定の文字列を見つけるには、検索ボックスを使用します。 3 つのイベントに一致したファイル名 "モデル" の検索の結果を次に示します。

Screenshot of Diagnostic Event search.

イベントの一覧で特定の文字列を見つけるには、検索ボックスを使用します。 4 つのイベントに一致した文字列 name の検索結果を次に示します。

Screenshot of Diagnostic Event search

詳細については、「 Searching and filtering the Events tab of the Diagnostic Tools window」を参照してください。

デバッグなしでプロファイリング データを収集する

デバッグなしでパフォーマンス データを収集するには、パフォーマンス プロファイラー ツールを実行できます。

  1. Visual Studio プロジェクトでプロジェクトを開き、ソリューション構成を [リリース] に設定し、配置ターゲットとして [ローカル Windows デバッガー] (または [ローカル コンピューター]) を選択します。

  2. [デバッグ]>[パフォーマンス プロファイラー] の順に選択するか、Alt+F2 を押します。

  3. 診断ツールの起動ページで、実行するツールを 1 つ以上選択します。 プロジェクトの種類、オペレーティング システム、およびプログラミング言語に適用されるツールのみが表示されます。 [すべてのツールの表示] を選択すると、この診断セッションで無効になっているツールも表示されます。

    Screenshot of diagnostic tools.

    Screenshot of diagnostic tools

  4. 診断セッションを開始するには、[開始] を選択します。

    セッションの実行中、一部のツールでは診断ツール ページにリアルタイム データのグラフが表示され、データ収集を一時停止および再開するためのオプションが表示される場合があります。

    Screenshot of data collection on the Performance Profiler.

    Screenshot of data collection on the Performance Profiler

  5. 診断セッションを終了するには、[コレクションの停止] を選択します。

    分析されたデータは、[レポート] ページに表示されます。

レポートを保存し、診断ツールの起動ページの [最近開いたセッション] 一覧から開くことができます。

Screenshot of Diagnostic Tools Recently Opened Sessions list.

Screenshot of Diagnostic Tools Recently Opened Sessions list

詳細については、次をご覧ください。

コマンド ラインからプロファイル データを収集する

コマンド ラインからパフォーマンス データを測定するには、Visual Studio またはリモート ツールに含まれている VSDiagnostics.exe を使用できます。 これは、Visual Studio がインストールされていないシステムでパフォーマンス トレースをキャプチャする場合や、パフォーマンス トレースのコレクションのスクリプトを作成する場合に便利です。 詳しい指示が必要であれば、「コマンド ラインからアプリケーションのパフォーマンスを測定する」を参照してください。