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