分析 Windows 市集應用程式中的 JavaScript 效能資料
本主題說明在 Microsoft Visual Studio Express 2012 for Windows 8 分析工具之報告檢視中顯示的 JavaScript 程式碼的效能資料。若要收集 JavaScript 效能資料,請參閱下列其中一個主題:
本主題內容
本主題包含下列章節:
Viewing performance reports
分析資料的類型
分析報告檢視的類型
分析報告檢視
摘要檢視
函式詳細資料檢視
呼叫樹狀圖檢視
呼叫端/被呼叫端檢視
模組與函式檢視
自訂資料格檢視
開啟分析報告檔案
當您從 Visual Studio IDE 停止分析執行時,效能資料會自動顯示在文件中。
若要開啟由 VSPerf 命令列工具產生、或在前次執行分析後儲存的分析報告 (.vspx) 檔案,請執行下列作業:
如有需要,請開啟 Visual Studio。
在 [檔案] 功能表上,選擇 [開啟檔案]。
在 [開啟檔案] 對話方塊中,巡覽至包含分析報告檔案的資料夾,然後選擇報告檔案。
分析資料的類型
函式的分析資料包括總計、平均、最小與最大時間和百分比。計算兩組時間值的這項資料:
[整體內含] 值是函式執行的總時間。
[整體專有] 值為函式僅執行其自有程式碼所花費的時間。值不包括花費在子函式中的時間。
分析報告檢視的類型
分析報告檢視可透過兩種方式顯示資料:
呼叫圖形檢視會顯示執行路徑內容中各函式的相關資訊。[摘要] 視窗的 [最忙碌路徑] 樹狀結構會顯示執行路徑,該路徑為您的應用程式在分析執行期間累積花費最多時間的路徑。「呼叫樹狀圖」(Call Tree) 檢視是分析執行中所有函式的呼叫圖形。[函式詳細資料] 和 [呼叫端/被呼叫端] 檢視著重在選取的函式,顯示呼叫選取函式的函式,以及選取函式呼叫的函式。呼叫圖形檢視可以協助您找到您的演算法的效能問題
函式清單檢視是依據選取的資料行來排序和列出函式。[摘要] 頁面上 [含有最多個別工作的函式] 清單會顯示函式,該函式花費大部分時間在執行自己的程式碼,但不包括函式呼叫子函式的時間。模組檢視會依據 JavaScript 程式碼的原始程式檔,以及依據其他語言的模組,來將函式分組。[函式] 檢視是一份函式清單。
分析報告檢視
摘要檢視
[摘要] 頁面會顯示兩個分析資料檢視,通常可為您指出最適用於效能最佳化的候選項目。
[最忙碌路徑] 樹狀結構會顯示呼叫堆疊,該堆疊為您的應用程式在分析執行期間累積花費最多時間的堆疊。了解此演算法為何會如此耗時,有助於最佳化的進行。
[含有最多個別工作的函式] 清單會顯示十個使用了最多專有時間的函式。藉由函式程式碼的最佳化或減少這些函式的呼叫次數,可讓您快速而大幅地提高效能。
函式詳細資料檢視
[成本分配] 橫條圖表示您選取的函式與執行所選函式的呼叫函式之間的關聯性,以及所選函式與它所呼叫的函式之間的關聯性。
[呼叫函式] 列會顯示呼叫所選取函式的函式。呼叫函式區塊的大小,表示呼叫函式引發之所選取函式的總執行時間百分比。
[選取的函式] 列表示選取的函式執行本身的程式碼時所耗費的相對總執行時間量 ([函式主體] 區塊),以及執行所選取函式呼叫的函式時所耗費的時間量。
[所呼叫函式] 列會顯示選取的函式所呼叫的函式。所呼叫函式區塊的大小,表示所呼叫函式耗費在所呼叫函式中的總執行時間百分比。
呼叫樹狀圖檢視
您可以使用 [呼叫樹狀圖] 檢視瀏覽在您的應用程式中周遊的函式執行路徑。樹狀圖的根是應用程式的進入點。每個函式節點會列出它所呼叫的所有函式,以及這些函式呼叫的相關效能資料。[呼叫樹狀圖] 檢視中的函式值,適用於呼叫樹狀圖中父函式所呼叫的函式執行個體。百分比值是函式執行個體的時間值與分析總執行時間的比例。
若要將焦點放在 [呼叫樹狀圖] 檢視中的某個節點上,請先選擇該節點,然後在捷徑功能表上選擇 [設定根目錄]。設定根節點時,除了所選取節點的樹狀子目錄以外,請從檢視中排除所有其他的項目。若要將根節點重設為原始節點,請在捷徑功能表上選擇 [重設根目錄]。
呼叫樹狀圖檢視資料行
資料行名稱 |
描述 |
---|---|
呼叫次數 |
呼叫樹狀圖中父函式對函式的呼叫次數。 |
整體內含時間 % |
花費在執行這個函式的執行時間百分比總計。 |
整體專有時間 % |
花費在執行函式主體的執行時間百分比總計。這不包含花費在對於函式所呼叫之函式的時間。 |
平均整體內含時間 |
執行這個函式所花費的平均時間。 |
平均整體專有時間 |
執行這個函式所花費的平均時間。這不包含花費在對於函式所呼叫之函式的時間。 |
模組名稱 |
對於 JavaScript 函式,則為包含函式的原始程式檔名稱。否則,為包含函式的模組名稱 (.dll 或 .exe)。 |
呼叫端/被呼叫端檢視
「呼叫端/被呼叫端」(Caller/Callee) 檢視是 [摘要] 檢視之 [函式詳細資訊成本分佈] 橫條圖中的資料樹狀結構表示,[摘要] 檢視包含所有時間詳細資訊。使用呼叫端/被呼叫端檢視調查選取之呼叫與被呼叫的函式和函式之間的關聯性。呼叫端/被呼叫端檢視是由三個方格所組成。
顯示於中間方格的 [目前的函式],會顯示所選取函式的分析資訊。這些值包括對函式的所有呼叫。[呼叫目前函式的函式] 顯示於上方的方格,[目前的函式所呼叫的函式] 顯示於下方的方格。目前函式的值是對函式之所有呼叫的總計。呼叫和被呼叫函式的值僅包括呼叫選取的函式或被其呼叫時花費的時間。
若要巡覽函式的呼叫樹狀結構,按兩下呼叫或被呼叫的函式。您按兩下的函式會成為新的選取函式。它的呼叫端和被呼叫函式現在是可見的。
呼叫端/被呼叫端檢視資料行
資料行名稱 |
描述 |
---|---|
呼叫次數 |
|
整體內含時間 % |
|
整體專有時間 % |
|
平均整體內含時間 |
|
平均整體專有時間 |
|
模組名稱 |
對於 JavaScript 函式,則為包含函式的原始程式檔名稱。否則,為包含函式的模組名稱 (.dll 或 .exe)。 |
模組與函式檢視
[模組] 與 [函式] 檢視會顯示分析報告中各函式的分析詳細資料。[模組] 檢視會根據包含 JavaScript 函式的 .js 原始程式檔對其進行組織。其他函式則會依據模組列出,例如 .dll。[函式] 檢視列出所有函式,而不使用階層架構。在 [模組] 檢視中尋找您自己的程式碼通常會比使用 [函式] 檢視來得容易,但您可能會發現在 [函式] 檢視中比較函式較為容易。
模組與函式檢視資料行
資料行名稱 |
描述 |
---|---|
呼叫次數 |
呼叫函式的次數。 |
整體內含時間 % |
分析執行中用來執行函式的總執行時間百分比。 |
整體專有時間 % |
用來執行函式的總執行時間百分比。此值不包括對於函式呼叫之函式所花費的時間。 |
平均整體內含時間 |
函式的平均執行時間。 |
平均整體專有時間 |
函式的平均執行時間。此值不包括花費在對於函式所呼叫之函式的時間。 |
模組名稱 |
對於 JavaScript 函式,則為包含函式的原始程式檔名稱。否則,為包含函式的模組名稱 (.dll 或 .exe)。 |
自訂資料格檢視
您可以新增或移除資料行,以及變更資料行的顯示順序。以滑鼠右鍵按一下資料列,並選取 [新增/移除資料行]。
注意事項 |
---|
對 Managed 和機器碼使用檢測方法時,程式碼執行的其他資訊會在 [應用內含]和 [應用專有] 時間欄位中收集和呈現。這項資訊在 JavaScript 中無法使用,因此 [應用] 值與 [整體] 值相同。我們不建議將這些欄位加入至檢視。 |
其他分析資料行
資料行名稱 |
描述 |
---|---|
函式名稱 |
函式的名稱。 |
函式位址 |
函式的位址。 |
函式行號 |
原始程式檔中這個函式的開頭行號。 |
呼叫次數 |
呼叫此函式的總次數。 |
原始程式檔 |
含有這個函式定義的原始程式檔。 |
模組名稱 |
包含該函式的模組名稱。 |
模組路徑 |
包含該函式的模組路徑。 |
處理序 ID |
分析執行的處理序 ID (PID)。 |
處理序名稱 |
處理序的名稱。 |
時間專有探查額外負荷 |
檢測對這個函式造成的時間額外負荷。其中不包括此函式所呼叫函式中的額外負荷。已經從所有專有時間減去探查額外負荷。 |
時間內含探查額外負荷 |
檢測對這個函式及其子函式所造成的時間額外負荷。其中包括此函式所呼叫函式中的額外負荷。已經從所有內含時間減去探查額外負荷。 |
整體專有時間 |
這個函式的所有呼叫的整體專有時間總計。 |
最大整體專有時間 |
呼叫這個函式的最大整體專有時間。 |
最小整體專有時間 |
呼叫這個函式的最小整體專有時間。 |
整體內含時間 |
這個函式的所有呼叫的整體內含時間總計。 |
最大整體內含時間 |
呼叫這個函式的最大整體內含時間。 |
最小整體內含時間 |
呼叫這個函式的最小整體內含時間。 |