我應該使用哪一種效能工具? (C#、Visual Basic、C++、F#)
Visual Studio 提供各種分析工具,可協助您根據應用程式類型診斷不同類型的應用程式效能問題。 在本文中,我們提供的資訊可協助您尋找適合您案例和應用程式類型的工具。
如需使用分析工具將程式碼最佳化的一般方法,請參閱案例研究:最佳化程式碼的初學者指南。
應該使用哪一種工具?
下表列出 Visual Studio 提供的不同工具,並提供選擇工具的常見案例。
效能工具 | 描述 | 使用此工具的時機? |
---|---|---|
CPU 使用量 | 顯示 CPU 花費時間的位置。 | • 開始對一般效能問題進行調查。 • 調查高伺服器 CPU 使用量。 • 調查 DevOps 案例,例如當訂單未通過零售網站時。 • 最佳化 CPU 使用量。 • 調查 API 呼叫中的延遲。 |
Flame Graph | 在 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 計數器的即時報告。 | • 開始對一般效能問題進行調查。 • 您想要 .NET 計數器型計量的追蹤記錄,例如每秒的例外狀況、記憶體回收及 CPU 使用率。 |
Database | 顯示資料庫查詢的效能。 | 調查使用 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 追蹤配置 | 是 | 否 | 是 | 是 |
檢測 | 是 | 是 | 是 | 是 |
檔案 I/O | 是 | 是 | 是 | 是 |
效能提示 | 是 | 是 | 是 | 是 |
事件檢視器 | 是 | 是 | 是 | 是 |
.NET Async | 是 | 否 | 是 | 是 |
.NET 計數器 | 是 (僅限.NET Core/5+ ) | 否 | 否 | 是 (僅限 ASP.NET 核心) |
Database | 是 (僅限.NET Core/5+ ) | 否 | 否 | 是 (僅限 ASP.NET 核心) |
GPU 使用量 | 是 | 是 | 是 | 否 |
應用程式時間軸 | 是 (XAML) | 否 | 是 | 否 |
效能總管 | 否 | 否 | 否 | 否 |
IntelliTrace | 僅限 .NET 與 Visual Studio Enterprise | 否 | 僅限 .NET 與 Visual Studio Enterprise | 僅限 .NET 與 Visual Studio Enterprise |
Linux 支援哪些工具?
Linux 支援下列工具作為目標平台和 Windows:
- CPU 使用率
- .NET Object Allocation 追蹤
- .NET Async
- .NET 計數器
- 事件檢視器
- Database
了解如何使用分析工具
下列文章和部落格文章提供詳細資訊,可協助您了解如何有效地使用 Visual Studio 效能工具。