共用方式為


首先查看分析工具(C#、Visual Basic、C++、F#)

應用程式效能測量工具對於想要優化程式代碼並改善應用程式效能的開發人員而言非常重要。 Visual Studio 提供一系列分析與診斷工具,可協助您診斷記憶體和 CPU 使用量和其他應用層級問題。 透過這些工具,您可以在執行應用程式時累積效能數據。 分析工具可藉由提供應用程式的運行時間和CPU使用量的視覺描述,協助您快速做出明智的決策。 在本文中,我們會快速查看最常見的分析工具。

如需選擇正確工具的說明,或查看不同應用程式類型的分析工具支援,請參閱 我應該使用哪個工具? 如需示範使用分析工具優化程序代碼的一般方法的教學課程,請參閱 案例研究:將程式代碼優化初學者指南。

如需此檔的最佳體驗,請從文章頂端的清單選擇您慣用的開發語言或運行時間。

測量發行組建中的效能

效能分析工具旨在為 版本 組建提供分析。 在效能分析工具中,您可以在應用程式執行時收集診斷資訊,然後在應用程式停止後檢查收集到的信息(驗屍分析)。

選擇 [偵錯 >效能分析工具][效能分析工具] 來開啟 [效能分析工具](或 [Alt + F2]。

效能分析工具的螢幕快照。

效能分析工具的螢幕快照。

如需在效能分析器中使用 CPU 使用量或記憶體使用量工具與除錯工具整合的詳細資訊,請參閱 在發行版本或偵錯版本上執行分析工具

效能分析工具中可用的工具包括:

若要查看不同應用程式類型的分析工具支援,請參閱 我應該使用哪個工具?

在某些情況下,視窗可讓您選取 多個分析工具。 CPU 使用量之類的工具可能會提供互補的數據,讓您可用來協助分析。 您也可以使用 命令行分析工具 來啟用涉及多個分析工具的案例。

在偵錯時測量效能

在偵錯會話期間,您可以在 [診斷工具] 視窗中存取分析工具。 除非您已關閉診斷工具視窗,否則 [診斷工具] 視窗會自動顯示。 若要顯示視窗,請按兩下 [偵錯] /[Windows] /[顯示診斷工具] [][或 按 Ctrl + Alt + F2]。 開啟視窗後,您可以選取您想要收集資料的工具。

診斷工具視窗

偵錯時,您可以使用 [診斷工具] 視窗來分析 CPU、記憶體使用量、.NET 計數器,以及檢視顯示效能相關信息的事件。

診斷工具視窗

偵錯時,您可以使用 [診斷工具] 視窗來分析 CPU 和記憶體使用量,並檢視顯示效能相關信息的事件。

診斷工具摘要檢視

診斷工具摘要檢視

診斷工具 視窗是分析應用程式的常見方式,但針對發行版本,您也可以改為對應用程式執行事後分析。 如需了解不同方法的詳細資訊,請參閱 在發行版或偵錯版中執行的分析工具。 若要查看不同應用程式類型的分析工具支援,請參閱 我應該使用哪個工具?

[診斷工具] 視窗或偵錯會話期間可用的工具包括:

提示

使用重新啟動功能來略過啟動頁面,並按 Alt+F2,或點擊 [除錯] > [效能分析工具]以自動依據先前的設定執行。

注意

需要 Windows 8 和更新版本,才能使用調試程式執行分析工具(診斷工具 視窗)。

分析 CPU 使用量

CPU 使用量工具是開始分析應用程式效能的好位置。 它會告訴您應用程式耗用的CPU資源。 您可以使用 偵錯工具整合的 CPU 使用量工具後期 CPU 使用量工具

使用調試程式整合的CPU使用量工具時,請開啟 [診斷工具] 視窗(如果已關閉,請選擇 [偵錯] / [Windows/ 顯示診斷工具]]。 偵錯時,開啟 [摘要] 檢視,然後選取 [記錄 CPU 設定檔]

在診斷工具

在診斷工具

使用此工具的其中一種方式是在程式碼中設定兩個斷點,一個是在函式開頭,另一個是在函式結尾,或您想要分析的程式代碼區域。 當您在第二個斷點暫停時,請檢查分析資料。

CPU 使用量 檢視會顯示依運行時間長短排序的函式清單,其中最上面的函式是運行時間最長的,位於 主要函式標題下。 [熱點路徑] 區段會顯示 CPU 使用最多的函式的呼叫堆疊。 這些清單可以指引您找到出現效能瓶頸的特定函式。

診斷工具 CPU 使用量檢視

CPU 使用量 檢視會顯示依運行時間最長排序的函式清單,頂端執行時間最長的函式。 這有助於引導您發現存在效能瓶頸的函式。

診斷工具 CPU 使用量檢視

點擊您感興趣的功能,您會看到更詳細的 呼叫樹檢視,其中選取的功能會被醒目提示。 數據表會顯示數據行,例如函式中花費的時間,包括稱為函式(CPU 總計),以及顯示函式所花費時間的第二個數據行,不包括稱為函式 (Self CPU)。 此數據可協助您評估函式本身是否為效能瓶頸。

提示

Visual Studio 分析工具同時支援收集和檢視追蹤。 分析工具也可以檢視先前由其他工具收集的追蹤,例如 dotnet-trace。 Dotnet-trace 會產生採樣結果,而不是經過儀器化的追蹤。 如需詳細資訊,請參閱 dotnet-trace

診斷工具呼叫端被呼叫者「蝴蝶」檢視

點擊您感興趣的函式,您會看到更詳細的三窗格「蝴蝶」檢視,其中選取的函式位於窗口中間、左側為呼叫函式,右側為被呼叫的函式。 函式主體 區段會顯示函數主體中花費的時間總計(以及時間百分比),不包括呼叫和呼叫函式所花費的時間。 此數據可協助您評估函式本身是否為效能瓶頸。

診斷工具主叫者被叫者「蝴蝶」檢視

分析記憶體使用量

[診斷工具] 視窗也可讓您使用 記憶體使用量 工具來評估應用程式中的記憶體使用量。 例如,您可以查看堆積上的物件數目和大小。 您可以使用 偵錯工具整合的記憶體使用量工具,或在效能分析器中使用 事後記憶體使用量工具

.NET 開發人員可以選擇 .NET 物件配置工具記憶體使用量 工具。

  • .NET 物件配置 工具可協助您識別 .NET 程式代碼中的配置模式和異常狀況,並協助識別垃圾收集的常見問題。 此工具只會以驗屍工具的形式執行。 您可以在本機或遠端電腦上執行此工具。
  • 記憶體使用量 工具有助於識別記憶體流失,這在 .NET 應用程式中通常並不常見。 如果您需要在檢查記憶體時使用調試程式功能,例如逐步執行程式代碼,建議使用 調試程式整合的記憶體使用量 工具。

若要使用 記憶體使用量 工具來分析記憶體使用量,您必須至少擷取一個記憶體快照集。 分析記憶體的最佳方式通常是擷取兩個快照:第一個在可疑記憶體問題發生之前,第二個在可疑記憶體問題發生之後。 然後,您可以查看兩個快照的差異,並準確看到改變的內容。 以下插圖顯示使用偵錯整合工具擷取快照。

在診斷工具中擷取快照集

在診斷工具中擷取快照集

當您選取其中一個箭號連結時,系統會提供堆積的差異檢視(紅色向上箭號 記憶體使用量增加 顯示增加的物件計數(左)或增加的堆積大小(右)。 如果您按一下正確的連結,您會收到依據堆積大小增加最多的物件排序的差異堆積視圖。 這可協助您找出記憶體問題。 例如,在下圖中,ClassHandlersStore 物件所使用的位元組在第二個快照集中增加 3,492 個字節。

診斷工具堆積差異檢視

診斷工具堆積差異檢視

如果您改為在 [記憶體使用量] 檢視中按一下左側的連結,堆視圖會依物件計數組織;數量增加最多的特定類型物件會顯示在頂端(依 Count Diff 欄位排序)。

儀錶

檢測工具類似於 CPU 使用量工具,不同之處在於它會提供確切的呼叫計數和時鐘時間,而不是 CPU 使用率。 檢測方法需要比 CPU 使用量工具更多的額外負荷。 此工具可在效能分析工具中使用。 選擇 [偵錯>效能分析工具] 開啟效能分析器(或按 [Alt + F2])。 如需詳細資訊,請參閱 Instrumentation

顯示 .NET 設備監控數據的螢幕快照。

檢查檔案輸入/輸出

檔案 I/O 工具 可協助您瞭解如何優化檔案 I/O 作業,以改善應用程式中的效能。 如果您嘗試調查和診斷載入時間變慢,新的檔案IO工具可協助您瞭解I/O作業對您的花費時間有何影響。 此工具可在效能分析工具中使用。 選擇 [偵錯] > 項目中的 [效能分析工具] 開啟分析工具(或按 Alt + F2)。

此工具會在索引標籤式清單檢視中顯示檔案讀取和檔案寫入作業。

顯示檔案IO工具已停止的螢幕快照。

使用 PerfTips 檢查效能

通常,檢視效能資訊最簡單的方式是使用 PerfTips。 使用 PerfTips,您可以在與程式代碼互動時檢視效能資訊。 您可以檢查事件持續時間等資訊(從調試程式上次暫停的時間或應用程式啟動時測量)。 例如,如果您逐步執行程式碼 (F10, F11),PerfTips 會顯示從上一個步驟作業到目前步驟的應用程式運行時間持續時間。

效能提示的螢幕快照。

PerfTips 的螢幕快照。

您可以使用 PerfTips 來檢查程式代碼區塊執行所需的時間,或單一函式完成所需的時間。

PerfTips 顯示出與診斷工具的 檢視中即會出現的 事件相同的事件。 在 事件 檢視中,您可以檢視偵錯時發生的不同事件,例如斷點設定或程式代碼逐步執行作業。

診斷工具事件檢視的螢幕快照。

診斷工具事件檢視的螢幕快照。

注意

如果您有 Visual Studio Enterprise,您也可以在此標籤頁中看到 IntelliTrace 事件

分析異步程式代碼 (.NET)

.NET 異步工具 可讓您分析應用程式中異步程式代碼的效能。 此工具可在效能分析工具中使用。 開啟[效能分析工具]的方法是選擇 [偵錯>效能分析工具] (或按 [Alt + F2])。

此工具會在清單檢視中顯示每個異步作業。 您可以看到異步操作的開始時間、結束時間和總時間等資訊。

.NET 異步工具已停止

此工具支援適用於 .NET Core 和 .NET 5+ 應用程式。

分析異步程式代碼 (.NET)

.NET 異步工具 可讓您分析應用程式中異步程式代碼的效能。 此工具可在效能分析工具中使用。 選擇 「偵錯」>「效能分析工具」 開啟效能分析工具(或使用 「Alt + F2」)。

此工具會在清單檢視中顯示每個異步作業。 您可以看到異步操作的開始時間、結束時間和總時間等資訊。

.NET 異步工具已停止

此工具支援適用於 .NET Core 和 .NET 5+ 應用程式。

分析資料庫效能 (.NET)

對於使用 ADO.NET 或 Entity Framework Core 的 .NET Core 和 .NET 5+ 應用程式,資料庫工具 可讓您記錄應用程式在診斷會話期間所做的資料庫查詢。 然後,您可以分析個別查詢的相關信息,以找出可改善應用程式效能的位置。 此工具可在效能分析工具中使用。 選擇 [偵錯>效能分析工具],(或 [Alt + F2]),來開啟效能分析工具。

此工具會在清單檢視中顯示每個查詢。 您可以看到查詢開始時間和持續時間等資訊。

配置

視覺化 .NET 計數器 (.NET)

從 Visual Studio 2019 16.7 版開始,您可以使用 Visual Studio 中的 .NET 計數器工具 可視化性能計數器。 您可以使用 dotnet 計數器 建立的計數器可視化,。 dotnet 效能計數器支援許多計數器,例如包括 CPU 使用量和垃圾收集器堆積大小。

此工具會顯示清單檢視中每個計數器的即時值。

.NET 計數器工具收集。

此工具支援適用於 .NET Core 和 .NET 5+ 應用程式。

檢查應用程式事件

一般 事件查看器 可讓您透過模組載入、線程啟動和系統設定等事件清單來檢視應用程式的活動,以協助更妥善地診斷應用程式在 Visual Studio 分析工具內執行的方式。 此工具可在效能分析工具中使用。 選擇 [偵錯 >][效能分析工具] 來開啟效能分析工具(或按 [Alt + F2])。

此工具會在清單檢視中顯示每個事件。 數據行會提供每個事件的相關信息,例如事件名稱、時間戳和進程標識碼。

事件查看器追蹤

在時間軸圖表中檢視自定義事件

您可以以程式設計方式建立自定義事件,以在時間軸圖表中顯示為圖示,例如 CPU 使用率和記憶體使用量時間軸圖表。 如需詳細資訊,請參閱 將使用者標記新增至時間軸

分析資源耗用量 (XAML)

在 XAML 應用程式中,例如 Windows 傳統型 WPF 應用程式和 UWP 應用程式,您可以使用應用程式時間軸工具來分析資源耗用量。 例如,您可以分析應用程式準備UI畫面框架(版面配置和轉譯)、處理網路和磁碟請求所花費的時間,以及在應用程式啟動、頁面載入和視窗大小調整等案例中。 若要使用此工具,請在[效能分析器]中選擇[應用程式時間軸],然後選擇[開始]。 在您的應用程式中,流覽具有可疑資源耗用量問題的案例,然後選擇 [停止收集],以產生報告。

視覺輸送量 圖形中出現的低幀速率,可能與您在執行應用程式時看到的視覺問題相關。 同樣地,在 UI 線程使用率圖中出現的高數值 也可能對應至 UI 回應性問題。 在報表中,您可以選取具有可疑效能問題的時段,然後在 [時程表詳細數據] 檢視中檢查詳細的 UI 線程活動(下方窗格)。

應用程式時間軸分析工具

應用程式時間軸分析工具

在 [時程表詳細數據] 檢視中,您可以找到活動類型(或涉及的 UI 元素)以及活動持續時間等資訊。 例如,在圖例中,Grid 控件的 Layout 事件需要 57.53 毫秒。

如需詳細資訊,請參閱 應用程式時間軸

檢視 UI 效能與輔助功能事件(UWP)

在您的 UWP 應用程式中,您可以在 [診斷工具] 視窗中啟用 UI 分析。 此工具會搜尋常見的效能或輔助功能問題,並在您進行偵錯時 事件 檢視中顯示它們。 事件描述提供可協助解決問題的資訊。

在診斷工具中檢視 UI 分析事件,

在診斷工具中檢視 UI 分析事件,

分析 GPU 使用量 (Direct3D)

在 Direct3D 應用程式中(Direct3D 元件必須位於 C++),您可以檢查 GPU 上的活動,並分析效能問題。 如需詳細資訊,請參閱 GPU 使用量。 若要使用此工具,請選擇 [效能分析工具] 中的 [GPU 使用量],然後選擇 [開始]。 在您的應用程式中,流覽您感興趣的分析案例,然後選擇 [停止收集] 來產生報告。

當您在圖表中選取時間週期並選擇 [檢視詳細數據時,詳細檢視會出現在下方窗格中。 在詳細檢視中,您可以檢查每個 CPU 和 GPU 上發生的活動量。 選取在最下方窗格中的事件,可以在時間軸中顯示相關的快顯視窗。 例如,選取 [Present 事件] 以檢視 Present 通話彈出視窗。 (淺灰色垂直 VSync 線可用作參考,以瞭解某些 Present 呼叫是否錯過了 VSync。每兩個 VSync 之間必須有一個 Present 呼叫,以確保應用程式穩定達到 60 FPS。)

GPU 使用量分析工具

GPU 使用量分析工具

您也可以使用圖形來判斷是否有 CPU 系結或 GPU 系結效能瓶頸。

分析效能 (舊版工具)

在 Visual Studio 2019 中,舊版效能總管和相關分析工具,例如[效能精靈] 已折疊至 [效能分析工具],您可以使用 Debug>Performance Profiler開啟。 在效能分析工具中,可用的診斷工具取決於所選的目標,以及目前開啟的啟動專案。 CPU 使用量工具提供先前在效能精靈中支援的取樣功能。 檢測工具提供已檢測的分析功能(適用於效能精靈中的精確呼叫計數和持續時間)。 其他記憶體工具也會出現在效能分析工具中。

效能總管工具