參考: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,根據您的需求將不同的意義指派給橫條。 選擇調用描述作為最後一個群組數據行,以檢視所有調用的色彩編碼條形圖。 它可協助您快速識別耗時的罪犯。 然後,放大並選擇活動名稱作為最後一個群組數據行,以查看最長的部分。 |
檔案
[檔案] 檢視可用來:
- 判斷最常包含哪些標頭,以及
- 協助您決定要在預先編譯的標頭中納入哪些專案(PCH)。
檔案檢視數據行
資料行名稱 | 描述 |
---|---|
ActivityName | 發出此檔案事件時進行中的活動。 目前,此值一律 為剖析。 |
BuildTimelineDescription | * |
BuildTimelineId | * |
元件 | * |
計數 | * |
深度 | 包含樹狀結構中以零起始的位置,在此樹狀目錄中找到這個檔案。 計數從 include 樹狀結構的根目錄開始。 值 0 通常對應至 .c/.cpp 檔案。 |
ExclusiveDuration | * |
IncludedBy | 包含目前檔案之檔案的完整路徑。 |
IncludedPath | 目前檔案的完整路徑。 |
InclusiveDuration | * |
InvocationId | * |
StartTime | 時間戳,表示發出目前檔案事件的時間。 |
工具 | * |
* 此資料行的值與 [ 建置總 管] 檢視中的值相同。
檔案檢視預設值
默認名稱 | 慣用檢視模式 | 如何使用 |
---|---|---|
統計資料 | Table | 查看以遞減順序查看清單,以查看哪些檔案具有最高的匯總剖析時間。 使用這項資訊可協助您重新建構標頭,或決定要包含在 PCH 中的內容。 |
函式
Functions 檢視可用來識別程式代碼產生時間過長之函式。
函式檢視數據行
資料行名稱 | 描述 |
---|---|
ActivityName | 發出此函式事件時進行中的活動。 目前,此值一律 為 CodeGeneration。 |
BuildTimelineDescription | * |
BuildTimelineId | * |
元件 | * |
計數 | * |
期間 | 此函式的程式代碼產生活動持續時間。 |
FunctionName | 正在產生程式代碼的函式名稱。 |
InvocationId | * |
StartTime | 時間戳,表示發出目前函式事件時的時間戳。 |
工具 | * |
* 此資料行的值與 [ 建置總 管] 檢視中的值相同。
函式檢視預設值
默認名稱 | 慣用檢視模式 | 如何使用 |
---|---|---|
統計資料 | Table | 查看以遞減順序查看清單,以查看哪些函式具有最高的匯總程式代碼產生時間。 它們可能會提示您的程式代碼過度使用 __forceinline 關鍵詞的位置,或某些函式可能太大。 |
時間表 | 圖表 | 查看此條形圖,以瞭解需要最多時間產生之函式的位置和持續時間。 查看它們是否符合 [建置總管] 檢視中的瓶頸。 如果這樣做,請採取適當的動作來減少其程式代碼產生時間,並讓您的建置時間受益。 |
另請參閱
開始使用 C++ Build Insights
參考:vcperf 命令
教學課程:Windows 效能分析器 基本概念
Windows Performance Analyzer