效能
自 3.2.0 版(測試版)起提供。
效能分頁會測量公式求值所花的時間。它會記錄每一次求值,並以時間線與表格呈現:耗時、呼叫次數、呼叫鏈。您可以看出時間都花在哪裡——包括 Ninext 自己觸發的呼叫。
此分頁僅供管理員使用。它只顯示其圖示——一個碼錶——位於錯誤與程式碼搜尋分頁之間;滑鼠停在上面時會顯示其名稱。它可在 Ninext 設定的「腳本管理器」區段中停用:公式效能分析。
開始與停止測量
主按鈕開始測量會採用所選開始方式的名稱(首次求值時開始、下次點擊時開始);測量進行時,它會變成停止測量。旁邊的小按鈕顯示所選開始方式與停止方式的圖示,會開啟選擇啟動觸發方式選單,分為兩個部分。第一部分決定測量何時開始:
| 開始方式 | 效果 |
|---|---|
| 立即開始 | 點選時即開始測量。這是預設設定。 |
| 首次求值時 | 測量從下一次公式求值開始,並以該次求值作為時間的起點。 |
| 下次點擊時 | 測量從下一次在效能分頁以外的點擊開始。等待期間,按鈕會變成取消。 |
第二部分決定測量何時停止:
| 停止方式 | 效果 |
|---|---|
| 手動停止 | 透過停止測量按鈕。這是預設設定。 |
| 10、30 或 60 秒後停止 | 倒數計時從測量開始時起算。 |
| 求值結束時 | 與「首次求值時」搭配提供:該次求值結束時(包括其後續的非同步部分),測量即停止。 |
| 放開滑鼠按鍵時 | 與「下次點擊時」搭配提供:放開滑鼠按鍵時,測量即停止。之後以非同步方式繼續進行的部分不會被測量。 |
如此一來,您就只會測量您關心的部分:開啟一筆記錄、點選一個按鈕、計算一個檢視。這些選擇在頁面重新載入之前都有效。
當測量在等待其觸發時,狀態列會顯示「已就緒——等待觸發…」。測量期間,它會顯示已進行的秒數、記錄到的求值次數,以及不同公式的數量。
須知
開始新的測量並不會清空先前的結果:求值會在多次測量之間累加——在表格、計數與時間線中皆然——直到您點選清空為止。每次測量都會在時間軸上從零開始:因此,連續兩次測量的橫條會在時間線的開頭重疊。若要單獨查看一次測量,請在開始之前點選清空。
時間線
每一次求值都是時間軸上的一條橫條。巢狀或同時進行的求值會堆疊成多行;每個公式都保有自己的顏色,半透明的橫條表示仍在進行中的求值。夠寬的橫條會標上其欄位名稱(「表格 ▸ 欄位」),外掛發出的呼叫則在前面加上「Ninext ▸」。畫面會即時填入。它最多保留 20,000 次求值:超過之後,會有一則註記顯示被捨棄的求值次數,這些求值只會在表格中繼續計算。
縮放方式:
- 滑鼠滾輪,或在 Chrome 中以觸控板雙指捏合,會以指標所在位置為中心縮放(雙指滑動則會捲動);
- 在橫條上按兩下,會選取它並放大到該橫條;
- 三個按鈕:縮放至整個工作階段、縮小時間刻度與放大時間刻度。
表格

表格會依公式彙整求值:
| 欄 | 內容 |
|---|---|
| 公式 | 被測量的公式。 |
| 呼叫次數 | 求值的次數。 |
| 總計(毫秒) | 累計的時間。 |
| 平均(毫秒) | 一次求值的平均時間。 |
| 最大(毫秒) | 耗時最長的一次求值。 |
表格依總時間排序,由最耗時到最不耗時,並每秒更新一次;只顯示前 100 行,超過時會有一則註記提醒(「顯示 100 列,共 N 列——最耗時的在前。」)。超過 1,000 個不同的公式時,其餘的公式會歸入一行「……其他公式」。架構中的公式,其呈現方式與欄位與公式中相同——導覽路徑、「Fx」、修改按鈕——當同一個公式出現在多個位置時,會附上「+N」。「Ninext」標記表示由外掛發出的呼叫。
求值的詳細資訊

點選某條橫條或某一行,即可開啟詳細資訊:
- 公式的完整程式碼;
- 若為橫條:開始、時長、記錄,以及從根求值一直到這一次求值的呼叫鏈,其中每個環節都可以點選;若為表格中的一行:測量值(呼叫次數、總時間、平均時間與最長時間);
- 來源,適用於由 Ninext 發出的呼叫;
- 變數(檢查),適用於受檢查公式的求值(見下文);
- 公式在架構中的位置,並附有前往程式碼的按鈕;
- 底部有縮放到此次求值與檢查此公式。
檢查公式
在表格或時間線中選取一個公式,然後點選檢查此公式。測量期間,每當該公式被求值,效能分析器都會記錄每個以 var 或 let 宣告的變數的值:顯示值的預覽,滑鼠停留時則顯示其型別。
檢查分頁會列出這些求值,最新的在最上方;點選其中一筆,即可在時間線中找到它。一次只能檢查一個公式;停止檢查可結束檢查。
兩項限制:重新賦值與迴圈變數不會被記錄;而受檢查公式的時間僅供參考,因為記錄本身也會花費時間。
解讀數據
- 時間為包含式:一個公式也會計入其所求值之公式的時間。
- 對於非同步求值,時間會一直計算到其結束為止,包括資料載入。
- 兩個具有完全相同公式的欄位,會共用表格中的同一行。
- 受測量的有:公式、觸發器、檢視的欄、控制台的程式碼,以及 Ninext 的呼叫。Ninext 本身的 JavaScript 則不在測量之列。
- 測量對每次求值只增加幾微秒的負擔,不測量時則完全沒有負擔。結果保存在記憶體中:重新載入頁面後便會消失。
