Visual Studio には、アプリの種類に応じてさまざまな種類のアプリ パフォーマンスの問題を診断するのに役立つさまざまなプロファイリング ツールが用意されています。 この記事では、シナリオとアプリケーションの種類に適したツールを見つけるのに役立つ情報を提供します。
プロファイリング ツールを使用してコードを最適化する一般的なアプローチについては、「ケース スタディ: コードの最適化に関する初心者向けガイド」を参照してください。
どのツールを使用する必要がありますか?
次の表に、Visual Studio が提供するさまざまなツールを示し、ツールを選択するための一般的なシナリオを示します。
性能ツール | 説明 | ツールを使用する場合 |
---|---|---|
CPU使用率 | CPU が時間を費やしている場所を示します。 | • パフォーマンスに関する一般的な問題の調査を開始します。 • 高いサーバー CPU 使用率を調査します。 • 注文が小売 Web サイトにアクセスしていない場合など、DevOps のシナリオを調査します。 • CPU 使用率を最適化します。 • API 呼び出しの待機時間を調査します。 |
フレーム グラフ | 呼び出しツリーの代替視覚化を提供する CPU 使用率ツール内で表示します。 | API 呼び出しの待機時間を調査する |
ホット パス | アプリケーションで CPU 時間の大部分が費やされた場所を示す CPU 使用率ツール内で表示します。 | API 呼び出しの待機時間を調査する |
メモリの使用量 | アプリのメモリを表示して、メモリ リークなどの問題を検出します。 | • メモリ使用量 の最適化 • UI のフリーズ の調査 • メモリ リークの可能性を調査する (ネイティブ コード) |
.NET オブジェクトの割り当て | .NET オブジェクトが割り当てられている場所とガベージ コレクションに関する情報を示します。 | • .NET メモリ使用量 の最適化 • ガベージ コレクションの分析 |
インストルメンテーション | 正確な通話回数と通話時間を表示します。 | •CPU使用率のようなツールが必要ですが、正確なコールカウントとウォールクロック時間に基づいて関数に費やされた時間が必要です。 • ロックの待機に費やされた時間など、ブロックされた時間を確認する必要があります。 • 注: このツールには追加のオーバーヘッドが必要です。 |
.NET カウンター | .NET カウンターのライブ レポート。 | • パフォーマンスに関する一般的な問題の調査を開始します。 • 1 秒あたりの例外、ガベージ コレクション、CPU 使用率など、.NET カウンターベースのメトリックのトレースが必要です。 |
BenchmarkDotNet | BenchmarkDotNet に基づくベンチマークのレポート。 | • 使用中の診断ツールに基づいて、CPU 使用率やメモリ割り当てなど、BenchmarkDotNet で収集されたデータのさまざまな視覚化を取得します。 |
ファイル入出力 | ファイル I/O 操作と、その処理にかかる時間とデータの量を示します。 | UI のフリーズを調査する |
パフォーマンスのヒント | コードの操作中にパフォーマンス情報をすばやく測定する方法を示します。 | デバッグ中に、前のステップ操作 (またはブレークポイント) から現在のステップまたはブレークポイントまでの経過時間を確認する必要があります。 |
イベント ビューアー | HTTP 要求、ログ メッセージ、例外を表示します。 | • API 呼び出しの待機時間を調査する • リモート Web サーバーで実行されている低速アプリケーションを調査する |
.NET Async | .NET アプリでの非同期/待機の使用状況を示します。 | 非同期コードでパフォーマンスの問題の可能性を調査します。 |
データベース | データベース クエリのパフォーマンスを表示します。 | ADO.NET または Entity Framework Core を使用するデータベース クエリのパフォーマンスを調査します。 |
GPU 使用率 | Direct3D アプリのハードウェア使用率の概要を示します。 | アプリのパフォーマンスが CPU バインドか GPU バインドかを確認します。 |
アプリケーション タイムライン | XAML アプリの UI パフォーマンスを示します。 | フレームのレンダリングに費やされた時間など、XAML アプリの UI パフォーマンスを調査します。 |
IntelliTrace | さまざまな実行時にイベントを記録し、アプリケーションの状態を調べることができるデバッガー ツール。 | ツールで、現在のアプリケーションの状態だけでなく、さまざまなポイントでアプリケーションの状態を調べる必要があります。 |
プロジェクトでサポートされているツールはどれですか?
次の表に、Visual Studio が提供するさまざまなツールと、それらを使用できるさまざまなプロジェクトの種類を示します。
性能ツール | 。網 | C/C++ | ユニバーサル Windows プラットフォーム (UWP) | ASP.NET/ASP.NET Core |
---|---|---|---|---|
CPU使用率 | はい | はい | はい | はい |
メモリの使用量 | はい | はい | はい | はい |
.NET オブジェクトの割り当て | はい | いいえ | はい | はい |
インストルメンテーション | はい | はい | はい | はい |
.NET カウンター | はい (.NET Core/5 以降のみ) | いいえ | いいえ | はい (ASP.NET Core のみ) |
BenchmarkDotNet | はい | いいえ | いいえ | パーシャル |
ファイル入出力 | はい | はい | はい | はい |
パフォーマンスのヒント | はい | はい | はい | はい |
イベント ビューアー | はい | はい | はい | はい |
.NET Async | はい | いいえ | はい | はい |
データベース | はい (.NET Core/5 以降のみ) | いいえ | いいえ | はい (ASP.NET Core のみ) |
GPU 使用率 | はい | はい | はい | いいえ |
アプリケーション タイムライン | はい (XAML) | いいえ | はい | いいえ |
パフォーマンス エクスプローラー | いいえ | いいえ | いいえ | いいえ |
IntelliTrace | .NET と Visual Studio Enterprise のみ | いいえ | .NET と Visual Studio Enterprise のみ | .NET と Visual Studio Enterprise のみ |
CMake プロジェクトのサポートは、C++ と同じです。 ただし、スタートアップ プロジェクトとして [実行可能ファイル] を選択して、パフォーマンス プロファイラー ( + F2) で実行可能ファイルをターゲットとして設定する必要があります。
Linux でサポートされているツールはどれですか?
次のツールは、ターゲット プラットフォームとして Linux または WSL と Windows でサポートされています。
- CPU 使用率
- .NET オブジェクト割り当ての追跡
- .NET Async
- .NET カウンター
- BenchmarkDotNet
- イベント ビューアー
- データベース
プロファイラーを使用する方法について説明します
次の記事とブログ記事では、Visual Studio パフォーマンス ツールを効果的に使用する方法を学習するのに役立つ詳細情報を提供します。
- ケース スタディ: コード の最適化に関する初心者向けガイド
- ケース スタディ: パフォーマンスの問題 を分離する
- 新しいインストルメンテーション ツール を使用して Visual Studio のパフォーマンスを向上させる
- ケース スタディ: 30 分以内で 2 倍のパフォーマンス