分享方式:


參考:Windows 效能分析器檢視

C++ Build Insights 工具可在 Visual Studio 2019 和更新版本中取得。 若要查看此版本的檔,請將本文的 Visual Studio 版本 選取器控制項設定為 Visual Studio 2019 或更新版本。 其位於此頁面目錄頂端。

本文提供 Windows 效能分析器 (WPA) 中每個 C++ Build Insights 檢視的詳細資料。 使用此頁面來尋找:

  • 資料行描述;和
  • 每個檢視的可用預設值,包括其預定用途和慣用的檢視模式。

如果您不熟悉 WPA,建議您先熟悉 適用于 C++ Build Insights 的 WPA 基本概念

組建總管

[建置總管] 檢視可用來:

  • 診斷平行處理原則問題,
  • 判斷您的建置時間是否以剖析、程式碼產生或連結為主,以及
  • 識別瓶頸和異常長的建置活動。

建置總管檢視資料行

資料行名稱 描述
BuildTimelineDescription 目前活動或屬性發生的時程表文字描述。
BuildTimelineId 目前活動或屬性發生時間軸之以零起始的識別碼。
元件 當發出目前事件時,正在編譯或連結的元件。 當沒有任何元件與此事件相關聯時,此資料行的值是 < 調用 X 資訊 > 。 X 是發出事件時所執行調用的唯一數值識別碼。 此識別碼與此事件之 InvocationId 資料行中的識別碼相同。
計數 此資料列所代表的活動或屬性數目。 此值一律為 1,而且只有在將多個資料列分組時,才會在匯總案例中使用。
ExclusiveCPUTime 此活動所使用的 CPU 時間以毫秒為單位。 在子活動中花費的時間不包含在此數量中。
ExclusiveDuration 活動的毫秒持續時間。 子活動的持續時間不包含在此數量中。
InclusiveCPUTime 此活動與所有子活動所使用的 CPU 時間,以毫秒為單位。
InclusiveDuration 此活動的毫秒持續時間,包括所有子活動。
InvocationDescription 發生此事件之調用的文字描述。 描述包含其為 cl.exe link.exe ,以及唯一的數值調用識別碼。 如果適用,它會在調用期間包含編譯或連結之元件的完整路徑。 對於未建置任何元件的調用,或針對建置多個元件的調用,路徑是空白的。 調用識別碼與 InvocationId 資料行中的識別碼相同。
InvocationId 發生此事件之調用的唯一數值識別碼。
名稱 此事件所代表的活動或屬性名稱。
Time 時間戳記,識別事件發生的時間。
工具 發生此事件時執行的工具。 此資料行的值為 CL 或 Link。
類型 目前事件的型別。 此值為 Activity 或 Property。
如果目前事件是屬性,則此資料行會包含其值。 當目前事件為活動時,此資料行會保留空白。

組建總管檢視預設值

預設名稱 慣用檢視模式 如何使用
活動統計資料 Graph / Table 使用此預設檢視所有組建總管活動的匯總統計資料。 在資料表模式中,一目了然地指出您的組建是否以剖析、程式碼產生或連結器為主。 每個活動的匯總持續時間會依遞減順序排序。 藉由展開頂端節點,輕鬆找出這些最上層活動需要最多時間的叫用。 如果您想要,您可以調整 WPA 設定以顯示平均值或其他匯總類型。 在圖表模式中,請參閱建置期間每個活動何時處於作用中狀態。
調用 圖表 向下捲動圖表檢視中依開始時間排序的調用清單。 您可以將它與 CPU (Sampled) 檢視一起使用,以尋找符合低 CPU 使用率區域的調用。 偵測平行處理原則問題。
調用屬性 Table 快速尋找指定編譯器或連結器調用的重要資訊。 判斷其版本、工作目錄,或用來叫用它的完整命令列。
時間表 圖表 查看如何平行處理組建的橫條圖。 一目了然地找出平行處理原則問題和瓶頸。 設定 WPA,根據您的需求將不同的意義指派給橫條。 選擇調用描述作為最後一個群組資料行,以檢視所有調用的色彩編碼橫條圖。 它可協助您快速識別耗時的罪犯。 然後,放大並選擇活動名稱作為最後一個群組資料行,以查看最長的部分。

Files

[檔案] 檢視可用來:

  • 判斷最常包含哪些標頭,以及
  • 協助您決定要在預先編譯的標頭中納入哪些專案(PCH)。

檔案檢視資料行

資料行名稱 描述
ActivityName 發出此檔案事件時進行中的活動。 目前,此值一律 為剖析
BuildTimelineDescription *
BuildTimelineId *
元件 *
計數 *
深度 包含樹狀結構中以零起始的位置,在此樹狀目錄中找到這個檔案。 計數從 include 樹狀結構的根目錄開始。 值 0 通常對應至 .c/.cpp 檔案。
ExclusiveDuration *
IncludedBy 包含目前檔案之檔案的完整路徑。
IncludedPath 目前檔案的完整路徑。
InclusiveDuration *
InvocationId *
StartTime 時間戳記,表示發出目前檔案事件的時間。
工具 *

* 此資料行的值與 [ 建置總 管] 檢視中的值相同。

檔案檢視預設值

預設名稱 慣用檢視模式 如何使用
統計資料 Table 查看以遞減順序查看清單,以查看哪些檔案具有最高的匯總剖析時間。 使用這項資訊可協助您重新建構標頭,或決定要包含在 PCH 中的內容。

函式

Functions 檢視可用來識別程式碼產生時間過長之函式。

函式檢視資料行

資料行名稱 描述
ActivityName 發出此函式事件時進行中的活動。 目前,此值一律 為 CodeGeneration
BuildTimelineDescription *
BuildTimelineId *
元件 *
計數 *
期間 此函式的程式碼產生活動持續時間。
函數名稱 正在產生程式碼的函式名稱。
InvocationId *
StartTime 時間戳記,表示發出目前函式事件時的時間戳記。
工具 *

* 此資料行的值與 [ 建置總 管] 檢視中的值相同。

函式檢視預設值

預設名稱 慣用檢視模式 如何使用
統計資料 Table 查看以遞減順序查看清單,以查看哪些函式具有最高的匯總程式碼產生時間。 它們可能會提示您的程式碼過度使用 __forceinline 關鍵字的位置,或某些函式可能太大。
時間表 圖表 查看此橫條圖,以瞭解需要最多時間產生之函式的位置和持續時間。 查看它們是否符合 [建置總管] 檢視中的瓶頸。 如果這樣做,請採取適當的動作來減少其程式碼產生時間,並讓您的建置時間受益。

另請參閱

開始使用 C++ Build Insights
參考:vcperf 命令
教學課程:Windows 效能分析器基本概念
Windows Performance Analyzer