Visual Studio プロファイリング ツール

プロファイリング ツールの設定は、オプションの[パフォーマンス ツール]にあります。

診断ツール (Diagnostic Tools)

デバッグ時に、メニューの【デバッグ → ウィンドウ → 診断ツールの表示】から表示できます。

このツールを無効にするには、デバッグの設定で[デバッグ中に診断ツールを有効にする]のチェックを外します。

メモリ使用量 (Memory Usage)

診断ツールの[メモリ使用量]タブから表示できます。[メモリ使用量]タブが表示されていない場合には、[ツールの選択]で[メモリ使用量]をチェックします。

デバッガが停止しているときに、[スナップショットの作成]をクリックします。[ヒープを表示]をクリックすると、最新のスナップショットがヒープ サイズでソートされて表示されます。複数のスナップショットがあるときには、それらのオブジェクト数やヒープ サイズをクリックするとそのスナップショットが表示されます。

スナップショットのメモリ使用量はマネージド ヒープに存在するオブジェクトだけが対象のため、タイムラインに表示されるプロセス メモリより小さな値となります。

Memory Usage - Visual Studio 2015 | Microsoft Learn パフォーマンス プロファイラーでメモリ使用量を分析する - Visual Studio (Windows) | Microsoft Learn Diagnosing memory issues with the new Memory Usage Tool in Visual Studio - Azure DevOps Blog

CPU使用率 (CPU Usage)

診断ツールの[CPU使用率]タブから表示できます。[CPU使用率]タブが表示されていない場合には、[ツールの選択]で[CPU使用率]をチェックします。

CPU Usage - Visual Studio 2015 | Microsoft Learn

トラブル対処法

診断ツールが機能しない

診断ツールのウィンドウに「診断ツール ウィンドウは、現在のデバッグ構成をサポートしていません。(The Diagnostic Tools window does not support the current debugging configuration.)」と表示され機能しないときには、デバッグ設定で[マネージ互換モード]や[ネイティブ互換モード]を無効にします。Diagnostic Tools debugger window in Visual Studio 2015 | Microsoft Application Lifecycle Management

予期せず失敗した

診断ツールが予期せず失敗しました。 出力ウィンドウの診断ハブ出力に追加情報が含まれている可能性があります。(The diagnostic tools failed unexpectedly. The Diagnostics Hub output in the Output window may contain additional information.)」として機能しないときには、指示に従い診断ハブの出力を確認します。

その内容が「インターフェイスがサポートされていません (No such interface supported)」ならば、“No such interface supported” in Visual Studio 2015 on Windows 10 | Azure DevOps Blogに示唆があります。

その内容が「クラスが登録されていません (Class not registered)」ならば、Visual Studioの再インストールを試みます。この状態はWindowsの更新で生じることがあります。

タイムラインが表示されない

診断ツールの上部にタイムラインが表示されないときには、ウィンドウの境界が上端にあり表示が隠されています。その場合にはウィンドウ上端でマウスポインタが変化する位置から、それを下方向へドラッグし境界を移動します。

ライムラインのグラフが表示されない

[ズームイン]や[ズームアウト]して、表示を更新すると直ります。

パフォーマンス プロファイラー (Performance Profiler)

メニューの【分析 (またはデバッグ) → パフォーマンス プロファイラー】を開き、ツールを選択した上で[開始]をクリックします。そうするとアプリケーションが起動し、分析が開始されます。

Memory Usage without Debugging | MSDN
ツール 機能
CPU 使用率 CPU がコードの実行に時間を要している箇所を調べます。CPU がパフォーマンスのボトルネックであるときに役立ちます。
GPU 使用率 DirectX アプリケーション内の GPU 使用率を確認します。CPU と GPU のどちらがパフォーマンスのボトルネックになっているのかを判断するのに便利です。
パフォーマンス ウィザード CPU サンプリング、インストルメンテーション、.NET メモリ割り当て、およびリソース競合
メモリ使用量 メモリリークなどの問題を検出するため、アプリケーション メモリを調査します
Energy Consumption Examine where energy is consumed in your application
HTML UI の応答性 Web サイトまたはアプリケーションで時間がかかった箇所を調べます
JavaScript メモリ メモリリークなどの問題を検出するため、JavaScript のヒープを調査します
アプリケーションのタイムライン アプリケーションのどこで時間が費やされたのかを調べます。低フレーム レートのような問題のトラブルシューティングを行うときに役立ちます。
ネットワーク HTTP の要求と応答ヘッダー、ペイロード、Cookie、タイミング データなど、アプリケーションの各ネットワーク操作に関する情報を確認します。

パフォーマンス ウィザード

プロファイル方法 機能  
CPU サンプリング 少ないオーバーヘッドで CPU 主体のアプリケーションを監視します サンプリングはプロファイル技法の 1 つで、プログラムの実行のスナップショットを定期的に取得します。インストルメンテーションに比べて収集されるデータが少ないため、長期のシナリオで実行できます。既定では、アプリケーションのパフォーマンスが、ハード ドライブやネットワークの速度などのその他の要因ではなく CPU の速度によって制限されている場合に、CPU 時間を最も多く使用している関数を特定できます。
インストルメンテーション 関数呼び出しの回数とタイミングを測定します インストルメンテーションはプロファイル技法の 1 つで、プロファイル対象のプログラムに診断プローブを挿入します。プロファイル データは、インストルメント化されたバイナリと、インストルメント化されたバイナリから直接呼び出される外部関数についてのみ収集されます。インストルメンテーションではサンプリングより多くのデータが収集されるため、少数のバイナリのみをインストルメント化し、データ収集コントロールを使用して、収集されるデータの量を減らすようにしてください。
.NET メモリ割り当て マネージ メモリの割り当てを追跡します  
リソース競合データ (同時実行) 他のスレッドを待機しているスレッドを検出します  
Understanding Performance Collection Methods - Visual Studio 2015 | Microsoft Learn

分析方法は[パフォーマンス エクスプローラー]で、対象のプロパティから設定できます。

トラブル対処法

Microsoft Visual Studio が診断レポートを作成できませんでした。出力ウィンドウでエラーを確認してください。」として出力ウィンドウの[診断ハブ]に、ファイルが見つかりません: 'C:\Users\***\AppData\Local\Temp\***'。のように管理者のアカウントのパスが表示されるならば、そのアカウントでVisual Studioを実行します。

Microsoft Learnから検索