腳本採集器 是 開發者控制器 中的工具,可以讓您記錄所有運行的腳本並檢視其 CPU 時間成本,並且可以使用自訂的儲存和顯示設定來查看腳本的掌握時間。它可以記錄所有類型的功能呼叫,包括 Luau 功能、方法呼叫和屬性
錄製詳細資料會議
在錄制之前,您需要選擇錄制環境:
- 客戶端 (預設) — 記錄客戶端的脚本,包括 LocalScripts 和 Scripts 以及 0> Class.BaseScript.RunContext|RunContext0> 設置在 3> enum.runContext.客戶端|客戶端 3> 上。
- 伺服器 — 記錄伺服器側的指令碼,包括 Scripts 與 RunContext 設定為 0> Enum.RunContext.Server|Server0> 或 3> Enum.RunContext.Legacy|Legacy 3> 。 指
您也可以設置以下儲存選項:
行為 | 選項 | 預設 | 說明 |
---|---|---|---|
頻率 | 每秒鐘 1000 次 (1 KHz) 每秒鐘 10,000 次 (10 KHz) | 1 千兆赫ц | 10 KHz 的頻率有更高的精度,因為 Script Profiler 可能無法檢測到執行更頻繁的 API 呼叫,但它也有更高的成本。 |
會議長度 | 1 分 5 分 10 分 手動 | 手動 | 手動選項需要您手動停止捕捉。 |
實時投票行為 | 開關 | 關 | 此行為會在每秒鐘採集和重新處理詳細資料。 |
要記錄新的個人檔案會作業:
開啟 開發者控制器。
擴展工具選擇框以選擇 腳本分析器 。
擴展客戶端-伺服器下拉欄選擇 客戶端 或 伺服器 。
(可選) 檢查 生活 選項框啟用實時投票行為。
(可選) 選擇 Freq 和 Time 來選擇錄像頻率和會議時間長度,如果你不想使用預設值。
單擊 開始 以開始 profiling 會作業。如果您設定了持續時間,Script Profiler 會顯示剩餘時間在會作業中。
按一下 停止 或等待錄像完成,以顯示詳細資料。
閱取個人資料
會議結束後,Script 分析器會生成一張表,顯示每個功能的時間成本。表會按最大時間從最少時間的順序排列功能呼叫,並允許您按名稱搜尋特定功能。它提供以下兩個視圖:
- 調整圖形 (預設): 類別化並顯示功能呼叫以樹狀結構。這個視窗會顯示每個訪問類別的節點,並允許您擴展它們以檢視功能。您也可以將鼠標指针指向樹狀結構中的任何節點以檢視文件和
- 函數 : 列出所有功能,而不分類為任務。
您也可以從以下顯示選項中選擇以適應您的Debug需求:
名稱 | 選項 | 預設 | 說明 |
---|---|---|---|
單位 | 毫秒 (ms)百分比 (%) | 毫秒 | 顯示每個 API 呼叫的時間以百萬秒或總記錄時作業的百分比。 |
平均 | 關1-秒1-分鐘5-分鐘10-分鐘 | 關 | 根據選擇的值計算每個 API 呼叫的平均時間。如果你選擇一個選項,其長度超過會話長度,Script profiler 會對會話長度進行估算,以計算平均值。例如,你可以選擇 5 分鐘的選項來計算 1 分鐘的平均值,如果你在 5 分鐘內執行代碼。 |
輸出個人資料
腳本檢查器允許您將儲存的分析資料匯出為JSON文件。要在分析會作業後匯出儲存的資料:
在 指令碼分析器 窗口中,按一下 輸出。
在輸出窗口中選擇要輸出的詳細會話。如果你想設定自訂名稱,請重新命名預設名稱。
按一下 導出 以儲存 JSON 檔案。
出口的 JSON 檔案包含以下字段:
- 版本 : 版本號。
- SessionStartTime : 以毫秒単位記錄會話開始時間。
- SessionEndTime : 在毫秒単位的時間標準中記錄會話結束時間。
- 類別 : 在自動檢測會作業中記錄的框架任務類別。每個項目包括:
- 名稱 :每個框架任務類別的名稱。
- 節點ID : 任務類別 (節) 的獨一標識。它是 1 基礎索引在 Nodes 陣列中的 1 基索引。例如,您可以使用 NodeId 的 0> 1230> 來取回 3> 123 3> 中的第 1
- 節點 : 記錄在 profiling 會作業中的節點列表。每個項目包括:
- 總持續時間 : 節點在微秒內所需的 CPU 時間。
- FunctionIds : 一個用於函數的獨一無二的識別器。
- NodeIds :一個集合節點ID的列表。
- 函數 : 在個別化作業話中記錄的函數。
- 總持續時間 : 微秒內 CPU 時間的功能所需的時間。
- 名稱 : 功能的名稱,如果可用。
- 來源 : 功能的來源,如果可用。
- 線條 : 如果可用,則函數的行號。
- 旗幟 : 一個指定任何特定功能執行環境的小 bit 場地。目前可以有以下值:
- 0 : 代表 IsNative 進行執行。
- 1 : 第 1 位代表 IsPlugin 為執行程式碼的執行程式。
範例已輸出個人資料
{
"Version":2,
"SessionStartTime":1704850750514,
"SessionEndTime":1704850751198,
"Categories":
[
{"Name":"Parallel Luau","NodeId":4},
{"Name":"Heartbeat","NodeId":1}
],
"Nodes":
[
{"TotalDuration":2530,"FunctionIds":[1],"NodeIds":[2]},
{"TotalDuration":2530,"FunctionIds":[2,5],"NodeIds":[3,7]},
{"TotalDuration":1267},
{"TotalDuration":7746,"FunctionIds":[3],"NodeIds":[5]},
{"TotalDuration":7746,"FunctionIds":[4],"NodeIds":[6]},
{"TotalDuration":7746},
{"TotalDuration":1263,"FunctionIds":[6],"NodeIds":[8]},
{"TotalDuration":1263,"FunctionIds":[7],"NodeIds":[9]},
{"TotalDuration":1263,"FunctionIds":[8],"NodeIds":[10]},
{"TotalDuration":1263}
],
"Functions":
[
{"Name":"main","TotalDuration":2530},
{"Source":"builtin_ManageCollaborators.rbxm.ManageCollaborators.Packages._Index.roblox_rodux-3.0.0.rodux.Store","Line":81,"TotalDuration":1267},
{"Name":"Script","TotalDuration":7746},
{"Source":"Workspace.Actor.Script","Line":1,"TotalDuration":7746},
{"Source":"builtin_DeveloperInspector.rbxm.DeveloperInspector.Packages._Index.DeveloperFramework.DeveloperFramework.UI.Components.Grid","Line":221,"TotalDuration":1263},
{"Source":"builtin_DeveloperInspector.rbxm.DeveloperInspector.Packages._Index.DeveloperFramework.DeveloperFramework.UI.Components.Grid","Name":"_update","Line":236,"TotalDuration":1263},
{"Source":"builtin_DeveloperInspector.rbxm.DeveloperInspector.Packages._Index.DeveloperFramework.DeveloperFramework.UI.Components.Grid","Name":"_getRange","Line":277,"TotalDuration":1263},
{"Source":"[C]","Name":"ScrollingFrame.CanvasPosition","TotalDuration":1263}
]
}