收集 CPU 樣本
收集樣本之前,必須先設定 PIX 以找到遊戲的 PDB。PDB 中的符號資訊會用來顯示 PIX 所收集之 CPU 樣本的函式名稱。如需詳細資訊,請參閱設定 PIX 存取 CPU PDB。 若要依據取樣間隔收集 CPU 樣本,請在時間擷取選項窗格的 CPU 區段中選取 CPU Samples 核取方塊。也必須使用 Sampling Rate 下拉式清單指定取樣間隔。取樣間隔的三個內建選項,可讓您在更多 CPU 樣本帶來的更高解析度,與更高取樣率所產生的額外負荷之間取得平衡。 若要依據 PMC 資料收集 CPU 樣本,請選取 PMC Rollover Samples 核取方塊。
在 Timeline 檢視中分析 CPU 樣本
依據取樣間隔收集的個別 CPU 樣本,會在 Timeline 中的執行緒與核心通道上,以垂直黑線的形式顯示在執行緒或核心指示列的正上方。選取樣本會在 Element Details 檢視中填入該樣本的呼叫堆疊。 下圖顯示名為 RunSimulation 的 PIX 事件,該事件需要數毫秒才能完成,且沒有子 PIX 事件。選取個別樣本可提供更多詳細資料,了解在遊戲未以更細緻之 PIX 事件檢測的這段時間內,正在執行哪些程式碼。例如,查看下圖中所選樣本的呼叫堆疊,可以看出名為 UpdateEnemyPositions 的函式正在執行,且正在使用 memcpy 函式複製記憶體。

自訂 CPU 樣本的顯示
可以使用執行緒或核心通道旁的齒輪圖示,或使用 Lane Configuration 面板,自訂 CPU 樣本的顯示方式。可以自訂代表樣本的垂直黑線高度,以及是否要在通道中顯示樣本,如下圖所示。
使用 Range Details 檢視分析彙總的 CPU 樣本
在 Timeline 中選取時間範圍時,可以使用 Range Details 檢視查看所選時間範圍內發生之所有樣本的彙總。樣本會跨所有執行緒與核心彙總,並可以堆疊樹狀結構或平面函式清單的形式檢視。有數個選項可用來變更所顯示的樣本集合,以及自訂這些樣本在堆疊樹狀結構中的組織方式。如需詳細資訊,請參閱下列主題。 從 Range Details 的 Items to show 下拉式清單中選取 Sampled Functions,即可檢視彙總的樣本。 以堆疊樹狀結構檢視彙總的樣本,可讓您查看所選時間範圍內最常出現的呼叫堆疊。對於堆疊樹狀結構中的每個函式,會以欄的形式顯示樣本落在該函式中的次數 (包含與不包含子系),以及包含與不包含子系的百分比。 下圖顯示所選時間範圍的彙總堆疊樹狀結構。堆疊樹狀結構中的 Inc % 欄顯示,有 33.33% 的樣本發生在 UpdateEnemyPositions 函式或其子系中。

依執行緒或核心將堆疊樹狀結構分組
根據預設,所有執行緒與核心的 CPU 樣本會在堆疊樹狀結構中分組在一起。不過,在某些情境中,您可能想將分析重點放在只從部分執行緒與核心收集的樣本上。Display Options 面板中的 Group by 下拉式清單提供依執行緒、核心,或先依核心再依執行緒將樹狀結構分組的選項。 選取分組選項後,堆疊樹狀結構會重新組織,依所選的分組選項,每個執行緒或核心各有一個根節點。下圖顯示依執行緒分組的堆疊樹狀結構。樹狀結構中的每個根節點都包含為單一執行緒收集的樣本。
依據 PMC 溢出值分析樣本
根據預設,Range Details 檢視中的堆疊樹狀結構與函式清單,是從依據取樣間隔收集的 CPU 樣本建立。依據間隔檢視樣本,可讓您知道哪些函式與呼叫路徑的執行時間最長或最常被呼叫。 堆疊樹狀結構與函式清單也可以從 PMC 值「溢出」(即達到特定發生次數) 時收集的樣本建立。依據 PMC 計數檢視樣本,可讓您知道在溢出事件發生時,正在執行哪些函式與呼叫路徑。例如,此分析可用來判斷哪些函式造成最多分支預測錯誤。 PIX 會從四個內建 PMC 收集樣本:- 資料快取遺漏 (DcacheMisses)
- 分支預測錯誤 (BranchMispredictions)
- 資料快取存取 (DcacheAccesses)
- 總發出指令數 (TotalIssues)

使用 PIX 事件限制所顯示的樣本集合
堆疊樹狀結構或平面函式清單中顯示的樣本集合,可以限制為在一或多個 PIX 事件執行個體執行期間所收集的樣本。以這種方式限制樣本,可讓您分析在 PIXBeginEvent 與 PIXEndEvent 呼叫之間執行的函式。 使用 Display Options 索引標籤中的 PIX Events 篩選控制項,選取一或多個 PIX 事件。視遊戲發出的事件數量而定,篩選控制項一開始可能會指出事件太多而無法顯示。


聚焦於函式
將函式選取為「焦點函式」,會依據對該函式的所有呼叫重建堆疊樹狀結構。焦點函式會成為樹狀結構中的頂端節點,其完整呼叫樹狀結構則顯示為子系。以這種方式檢視樣本,可讓您分析函式的呼叫樹狀結構,找出最常被呼叫、執行時間最長等的呼叫路徑。 若要選取要聚焦的函式,請以滑鼠右鍵按一下 Range Details 檢視中的函式,然後從操作功能表中選擇 Set Focus Function,如下圖所示。

取樣分析工具 C++ 原始程式碼檢視
取樣分析工具原始程式碼檢視可用來識別指定函式的熱點,也就是大多數樣本落在其上的程式碼行。 若要檢視函式的附註原始程式碼,請在 Range Details 檢視中選取該函式,並將 Element Details 檢視從 Details 切換為 Source Analysis,如下圖所示。


