在 Visual Studio 效能分析工具、Windows 效能工具組和 PerfView 中選擇

本指南提供 Microsoft 主要一般用途效能分析技術的一般比較:Visual Studio 效能分析工具、Windows 效能工具組和 PerfView。

這些工具可協助您診斷及瞭解 Windows 上應用程式的效能特性。 本指南的目標是提供一個概觀,說明何時要彼此使用、強調其每個優點,以及提供其所含功能的簡短概觀。

概觀

Visual Studio 效能分析工具是由 Visual Studio 小組所建立,可快速瞭解現有 Visual Studio 專案系統內開發的應用程式效能特性。 其強項在於與開發中的專案緊密整合,簡化了對最常見的效能案例進行分析,並且可以快速、輕鬆地收集單一應用程式。

Windows 效能工具組是由 Windows 小組所建立,可一次了解整個電腦的全系統特性。 它起初是為了分析硬體和驅動程式的需求而發展,但在瞭解軟體問題方面也非常有效。 其強項在於一次從整部機器收集大量資訊,因此,對於多處理序問題、與硬體或驅動程式有關的問題,以及複雜的案例,這些工具非常適合。

PerfView 是由 .NET 小組所建立,以瞭解 .NET 應用程式的效能。 如同 Windows 效能工具組,它可以一次從整部機器收集大量資訊。 其可區分其顯示 .NET 執行階段服務的詳細資訊,例如記憶體回收、Just-In-Time 編譯和受控執行緒集區。 PerfView 可用於受控、原生和混合模式應用程式。

這些工具的用途之間有重疊。 通常您可以在一個工具中開始探索問題,然後切換到另一個工具,以獲得相同案例的不同視角。 有些時候,其中一個工具比其他工具更有效。

安裝

Visual Studio 分析工具是 Visual Studio 本身的元件,可透過與開發環境其餘部分相同的安裝精靈進行安裝。

Windows 效能工具組可個別下載為 Windows 評定及部署套件的一部分。 不過,命令行 Performance Recorder 工具會預先安裝 Windows 10 和 Windows 11,如 wpr.exe,可在像 PowerShell 和命令提示字元這樣的殼層中的預設路徑變數中使用。

效能分析器可做為 Microsoft Store 中的應用程式使用。

PerfView 可以在 PerfView GitHub Releases 頁面中以獨立下載方式取得。 不需要安裝。

自訂進階效能分析案例

Windows 效能工具組另外提供兩個擴充點,可提供進階效能分析案例。

  • Microsoft 效能工具組 SDK 會處理追蹤資料,並讓開發人員建置自己的外掛程式,以在 Windows 效能分析器內檢視。
  • .NET TraceProcessing 允許編寫自訂工具,可以將追蹤資訊處理為結果資料表,對於自動分析大量追蹤資料特別有用。

PerfView 同樣是以 .NET TraceEvent 程式庫為基礎,用於以程式設計方式取用效能追蹤。 TraceEvent 可獨立於 PerfView 使用,進行效能追蹤資料的自訂分析。

注意

為了讓效能分析方案正常運作,您需要存取與正在測試的 Windows 應用程式相關聯的符號。 在使用 Visual Studio 建置時,它們將位於與偵錯案例設定相同的位置,這些位置可以是您的方案中建置的位置,也可以是從符號伺服器擷取的位置。 分析其他程式庫或元件時,您必須找出這些元件的符號,才能完成分析。

選擇工具的考量

選擇的工具取決於您打算探索的效能案例。 工具的功能和特性比較如下表所示:

提示

一般原則是,盡可能以 Visual Studio 程式碼剖析開始。 當您達到 Visual Studio 工具的極限時,可以轉向 Windows 效能工具組PerfView

情況 Visual Studio 效能分析工具 Windows 效能工具組 PerfView
一般使用考量
追蹤檔案大小 ✔️ 🆗 🆗
取得工具 ✔️ ✔️ ✔️
擴充性套件 ✔️ ✔️
工作範圍考量
單一處理序或專案 ✔️ 🆗 🆗
多重處理序 ✔️ ✔️
硬體考量
CPU 使用量 ✔️ ✔️ ✔️
GPU 使用量 ✔️ ✔️
記憶體使用量 ✔️ ✔️ ✔️
裝置輸入/輸出 ✔️ ✔️
用電量 ✔️
系統處理 ✔️ ✔️
程式碼語言支援考量
支援 C/C++ ✔️ ✔️ ✔️
支援 .NET ✔️ ✔️ ✔️
支援 JavaScript 🆗 🆗 🆗
案例考量
Windows 事件追蹤 🆗 ✔️ ✔️
組合 ✔️
HTML/Edge/Internet Explorer/Webview ✔️
XAML/WinUI 🆗 ✔️ ✔️
音訊/視訊管線和故障 ✔️
資料庫時機 ✔️
受控物件配置與記憶體回收 ✔️ ✔️
自訂案例 ✔️ ✔️

機碼

  • ✔️ 良好支援:專為既定工作而設計,並達成穩健且詳盡的結果。
  • 🆗 支援:可能需要額外的設定或步驟才能達到所需的結果。 在這個類別中可能包含有限的功能。
  • ❌ 不支援:不適用於此用途。

一般使用考量

對於剛開始進行效能分析的人,我們建議使用 Visual Studio 效能分析工具,它是 Visual Studio 開發套件中已整合良好的功能之一。 如果符合您的需求,建議您透過 PerfView 使用 Visual Studio 效能分析工具。

對於可能需要更多電源和多功能性的更複雜系統效能分析,我們建議使用 Windows 效能工具組,它包含用來完成效能分析工作的兩個工具:

  • Windows Performance Recorder 既可作為命令列工具,又具有圖形化介面,負責擷取追蹤工作階段。
  • 稍後會開啟 Windows 效能分析器,以對收集的資料進行後續處理,並提供高度可自訂的分析檢視。

Visual Studio 效能分析工具提供的一些優點包括:

  • 在主要領域中,對效能分析的良好介紹
  • 它會根據專案組態自動處理許多分析和偵錯的複雜性
  • 它會自動突顯主要的關注重點
  • 專注於單一應用程式,使用較小、更專注的資料集和更小的收集範圍,這樣會更好。
  • 較特定的焦點在進行分析時會對其他應用程式和機器硬體產生較少影響,產生和儲存的追蹤檔案整體大小較小,以及在收集完成後查看資訊的處理速度增加
  • 開始和完成追蹤時需要的時間較短,並且具有更快的檢閱和轉換能力,因為 Visual Studio 效能分析工具只關注應用程式而非整個系統。
  • 資料收集和相應的分析都在 Visual Studio 內進行,分析頁面在收集結束時自動啟動。 報表檢視也會自動將注意力集中在熱點或行動區域。

Windows 效能工具組提供的一些優點包括:

  • Windows 效能及診斷團隊提供了豐富的文件部落格,以協助您入門。
  • 這是對收集非常大型檔案更好的方式,特別是從正在執行背景工作的系統中。 這是收集資訊的工具,稍後會在 Windows 效能分析器介面中進行篩選。
  • 能夠針對使用擴充點的進階效能分析案例進行自訂。 (查看下方內容)

PerfView 提供的優點包括:

  • 在應用程式內部連結的完整內建文件和可透過網路存取的操作說明影片
  • 只需複製 PerfView.exe,即可輕鬆部署到生產環境中。
  • 捕捉難以重現問題的飛行記錄器模式
  • 對 .NET 執行階段服務非常詳細的診斷。
  • 可延伸以供自訂檢視。

工作範圍考量

針對單一應用程式尤其是單一處理序的分析,所有工具在收集和理解效能方面都非常有能力。 優勢在於 Visual Studio 效能分析工具,尤其是當應用程式原始碼和專案系統已經可用時。 Visual Studio 效能分析工具引擎的設計目的是以與 F5 偵錯功能類似的流暢方式,從二進位檔案中收集 CPU、GPU 和記憶體資訊。 專注於手頭上的應用程式的同時,這個收集機制提供了更緊密的回饋和開發者循環。

如果 Visual Studio 沒有必要的功能,請選擇 [PerfView],因為集合需求(生產環境中常見),或需要更詳細的 .NET 診斷功能,所以無法執行。

對於包含多個跨處理序要求硬體裝置及其驅動程式,或深入研究 Windows 平台技術較複雜情況,Windows 效能工具組是最佳選擇。

硬體考量

Visual Studio 效能分析器、Windows 效能工具組和 PerfView 可以診斷主要硬體元件的 CPU 和記憶體,而 Visual Studio 效能分析器和 Windows 效能工具組還支援 GPU。 這些工具在這些領域的初級分析方面通常能夠很好地比對。

CPU 使用量可以使用所有三種工具進行分析,通常使用取樣來擷取。 取樣定期從應用程式中擷取堆疊追蹤,並提供它們出現頻率的排名。 這兩個工具都可以調整這個行為,改為使用儀器或工具來進行準確的記錄和分析。

GPU 使用量可以透過 Visual Studio 效能分析器和 Windows 效能工具組來分析,擷取到的是一般性的資訊概觀。

記憶體使用量可以使用三種工具來分析,這三種工具收集有關堆積空間和與堆積中分配相關的堆疊的資訊。

當出現更複雜的案例時,例如分析網路、磁碟、裝置、控制代碼或系統整體耗電量時,Windows 效能工具組更適合處理分析工作。 這些資料最好直接從作業系統收集,因為它會向各種硬體元件發出要求。 Windows 效能工具組是與作業系統同步開發的,因此它準備好並能夠收集這更專注於系統的類別資訊。

程式碼語言支援考量

Windows 效能工具組主要專注於支援 C 和 C++,因為這些語言會用於 Windows 作業系統的程式碼基底。

Visual Studio 效能分析工具支援著重於更廣泛的程式語言,從 .NET 起源技術如 C# 和 ASP.NET 開始,然後擴展到其他領域。

PerfView 支援 .NET 和原生 (C 和 C++) 應用程式。 它對 .NET 執行階段具有深入的了解,並具有處理 ASP.NET Web 工作負載的能力。

這並不代表 Visual Studio 無法分析 C 或 C++ 程式碼,或者 Windows 效能分析器無法分析 .NET 應用程式,或者 PerfView 無法分析 Web 應用程式。 只是最好從與被分析應用程式最相近的工具開始,以充分利用每個工具的優勢。

案例考量

所有工具都包含數個以案例為基礎的選項,可用來研究應用程式效能。

Visual Studio 效能分析工具選項通常著重於 .NET、使用者介面 (UI) 和位於所分析應用程式內的資料庫。

Windows 效能工具組傾向於專注於作業系統元件和架構,例如組合、瀏覽器檢視以及即時處理管線中的故障。

對於需要特別自訂方案的案例,Windows Performance Recorder 可以將全系統收集和應用程式相關的收集資料合併到一個錄製工作階段中。 這項功能讓應用程式開發人員能夠提供完整的解決方案,以部署給客戶,用於從可能與開發產品不同的硬體上要求效能資料。 在 Windows 效能與診斷團隊的撰寫自訂設定檔部落格系列中可以找到這個機制的更多資訊。

PerfView 專注於深入研究 .NET 應用程式和執行階段,但在多處理序和作業系統層級的調查中同樣表現出色。

摘要

Visual Studio 效能分析工具、Windows 效能工具組和 PerfView 是 Microsoft 提供給您的三個強大工具,可幫助您了解應用程式的效能。 選擇最適合您需求的工具,需要考量您特定情況的各種因素。 希望這份指南能夠提供您做出明智的效能分析選擇所需的資訊,也歡迎您在下方填寫意見回饋,或是提出與 Windows 開發效能有關的問題,請在 Windows Dev Performance 存放庫中提出問題。