Visual Studio 提供各種分析工具,可協助您根據應用程式類型診斷不同類型的應用程式效能問題。 在本文中,我們提供的資訊可協助您尋找適合您案例和應用程式類型的工具。
如需使用分析工具優化程序代碼的一般方法,請參閱 案例研究:將程式代碼優化的初學者指南。
我應該使用哪一個工具?
下表列出 Visual Studio 提供的不同工具,並提供選擇工具的常見案例。
| 效能工具 | 描述 | 使用此工具的時機? |
|---|---|---|
| CPU 使用量 | 顯示 CPU 花費時間的位置。 | • 開始對一般效能問題進行調查。 • 調查高伺服器 CPU 使用量。 • 調查 DevOps 案例,例如當訂單未通過零售網站時。 • 優化CPU使用量。 • 調查 API 呼叫中的延遲。 |
| 火焰圖 | 在 CPU 使用量工具中檢視,該工具提供呼叫樹的替代視覺化。 | 調查 API 呼叫中的延遲 |
| 經常性路徑 | 在CPU使用量工具中檢視,其中顯示應用程式中大部分的CPU時間都花在何處。 | 調查 API 呼叫中的延遲 |
| 記憶體使用量 | 顯示應用程式的記憶體,以找出記憶體流失等問題。 | • 優化記憶體使用量 • 調查介面卡死 • 調查可疑的記憶體洩漏(原生代碼) |
| .NET 物件配置 | 顯示配置 .NET 物件的位置,以及有關垃圾收集的資訊。 | • 優化 .NET 記憶體使用量 • 分析垃圾收集 |
| 儀器 | 顯示確切的通話計數和通話時間。 | • 您需要像 CPU 使用量這樣的工具,但希望根據實際時間精確計算函式的呼叫次數和所花費的時間。 • 您想要查看阻塞時間,例如等待鎖定時所花費的時間。 • 注意:此工具需要額外的開銷。 |
| .NET 計數器 | .NET 計數器的實時報告。 | • 開始對一般效能問題進行調查。 • 您想要追蹤 .NET 計數器型計量,例如每秒的例外狀況、垃圾收集及 CPU 使用率。 |
| BenchmarkDotNet | 以 BenchmarkDotNet 為基礎的基準檢驗報告。 | • 根據使用的診斷程式,取得 BenchmarkDotNet 收集的數據的不同視覺效果,例如 CPU 使用量或記憶體配置。 |
| 文件輸入/輸出 | 顯示您的檔案 I/O 作業,以及它們花費的時間,以及其處理的數據量。 | 調查 UI 凍結 |
| PerfTips | 顯示與程式代碼互動時,快速測量效能資訊。 | 偵錯時,您想要查看上一個步驟作業(或斷點)到目前步驟或斷點之間經過的時間。 |
| 事件查看器 | 顯示 HTTP 要求、記錄訊息和例外狀況。 | • 調查 API 呼叫中的延遲 • 調查遠端 Web 伺服器上執行的緩慢應用程式 |
| .NET 異步 | 顯示 .NET 應用程式中的異步/await 使用量。 | 調查異步程式代碼的可疑效能問題。 |
| 資料庫 | 顯示資料庫查詢的效能。 | 調查使用 ADO.NET 或 Entity Framework Core 的資料庫查詢效能。 |
| GPU 使用量 | 顯示 Direct3D 應用程式的高階硬體使用量。 | 檢查應用程式的效能是否為 CPU 系結或 GPU 系結。 |
| 應用程式時間軸 | 顯示 XAML 應用程式的 UI 效能。 | 調查 XAML 應用程式中的 UI 效能,例如轉譯畫面格所花費的時間。 |
| IntelliTrace | 調試程式工具可讓您記錄事件,並在各種執行點檢查應用程式狀態。 | 您希望工具在各種點檢查應用程式狀態,而不只是目前的應用程式狀態。 |
我的項目支援哪些工具?
下表列出 Visual Studio 提供的不同工具,以及您可以搭配使用的不同項目類型:
| 效能工具 | .NET | C/C++ | UWP | ASP.NET/ASP.NET 核心 |
|---|---|---|---|---|
| CPU 使用量 | 是的 | 是的 | 是的 | 是的 |
| 記憶體使用量 | 是的 | 是的 | 是的 | 是的 |
| .NET 物件配置 | 是的 | 不 | 是的 | 是的 |
| 儀器 | 是的 | 是的 | 是的 | 是的 |
| .NET 計數器 | 是 (僅限.NET Core/5+ ) | 不 | 不 | 是 (僅限 ASP.NET 核心) |
| BenchmarkDotNet | 是的 | 不 | 不 | 部份 |
| 文件輸入/輸出 | 是的 | 是的 | 是的 | 是的 |
| PerfTips | 是的 | 是的 | 是的 | 是的 |
| 事件查看器 | 是的 | 是的 | 是的 | 是的 |
| .NET 異步 | 是的 | 不 | 是的 | 是的 |
| 資料庫 | 是 (僅限.NET Core/5+ ) | 不 | 不 | 是 (僅限 ASP.NET 核心) |
| GPU 使用量 | 是的 | 是的 | 是的 | 不 |
| 應用程式時間軸 | 是 (XAML) | 不 | 是的 | 不 |
| 效能探勘器 | 不 | 不 | 不 | 不 |
| IntelliTrace | .NET 僅適用於 Visual Studio Enterprise | 不 | .NET 僅適用於 Visual Studio Enterprise | .NET 僅適用於 Visual Studio Enterprise |
CMake 項目的支援與C++相同。 對於 CPU 使用率、記憶體使用量、檔案 I/O 和事件檢視器,您可以針對啟動專案執行分析工具。 不過,對於檢測和 GPU 使用量,您必須選取 [可執行檔] 作為 + ] ,將可執行檔設定為效能分析器 (AltF2) 中的目標。
CMake 項目的支援與C++相同。 不過,您必須選取 [可執行檔] 作為 + ],在 [效能分析工具] 中將可執行檔設定為目標。
Linux 支援哪些工具?
下列工具支援在 Linux、WSL 以及 Windows 作為目標平臺:
- CPU 使用量
- .NET 物件配置追蹤
- .NET Async
- .NET 計數器
- BenchmarkDotNet
- 事件查看器
- 資料庫
瞭解如何使用分析工具
下列文章和部落格文章提供詳細資訊,可協助您瞭解如何有效地使用 Visual Studio 效能工具。