腳本偵測器

*此內容是使用 AI(Beta 測試版)翻譯,可能含有錯誤。若要以英文檢視此頁面,請按一下這裡

腳本偵測器是開發者控制台內的工具,可讓您記錄所有運行的腳本的偵測會話,並查看其CPU時間費用以及使用自訂記錄和顯示設定。它可以記錄所有類型的功能呼叫,包括 Luau 功能、方法呼叫和屬性訪問。這個工具有助於識別佔用最多 CPU 資源並降低性履約的腳本。

記錄個人化會話

在錄製之前,您需要從以下選擇錄製環境:

  • 客戶端 (預設) — 記錄客戶端腳本,包括 LocalScriptsScripts 使用 RunContext 設置為 Client
  • 伺服器 — 記錄服務器側腳本,包括 設為 或 。腳本偵測器在每個會作業結束時清除所有收集的服務器端資料。

您也可以設定以下記錄選項:

行為選項預設說明
頻率每秒 1000 次 (1 KHz)10,000 次每秒 (10 KHz)1 KHz10 KHz 頻率的精度更高,因為腳本偵測器可能不會捕捉到比選擇的頻率更頻繁地執行的 API 呼叫,但也有更高的性能成本。
會話長度1 分鐘5 分鐘10 分鐘手動手動手動選項需要您手動停止錄製。
實時投票行為開啟關閉關閉此行為每秒在進行分析期間會檢查和刷新分析作業料。

要記錄新的分析會作業:

  1. 開啟 開發者控制台

  2. 擴展工具下拉選單以選擇 腳本檢查器

    Dropdown menu of all Developer Console tools with the ScriptProfiler option highlighted for selection.
  3. 擴展客戶端與伺服器下拉選單以選擇 客戶端伺服器

    Dropdown menu with Client and Server options for selection.
  4. (可選) 檢查 實時 檢查框以啟用實時投票行為。

  5. (可選) 選擇 頻率時間 來選擇記錄頻率和會話時間長度,如果你不想使用預設值。

  6. 點擊 開始 開始分析會作業。如果您設定時間長度,腳本偵測器會顯示剩餘時間在會作業中的倒數計時器。

  7. 點擊 停止 或等待記錄結束以顯示調試數據。

閱讀個人化資料

會話停止後,腳本偵測器會生成一個表,顯示每個功能呼叫的 CPU 時間成本。表排序功能從最多使用時間到最少使用時間排序,並允許您按名稱搜尋特定功能。它提供以下兩個視圖:

  • 呼叫圖 (預設):依據框架任務將功能呼叫分類和顯示到樹狀結構。這個觀點會將每個任務類別顯示為同一根樹下的節點,並允許您擴展它們以查看功能。您也可以將鼠標懸停在樹中的任何節點上,查看文件和行信息。例如, 步驟/攝影機輸入/<anonymous> 可能會揭露Players.[LocalPlayer].PlayerScripts.PlayerModule.CameraModule.CameraInput:125 Example callgraph view of a profiling session.
  • 功能 :列出所有功能,不依據任務進行分類。 Example functions view of a profiling session.

您也可以從以下顯示選項中選擇,以調整您的偵錯需求:

名稱選項預設說明
單位毫秒 (ms)百分比 (%)ms顯示每次API呼叫所花費的時間以毫秒或總錄音會作業百分比來顯示。
平均關閉1-秒1-分5-分10-分關閉計算選擇的值在每次API呼叫上的平均時間。如果您選擇超過會話長度的選項,腳本偵錯器會將會話長度延伸到計算平均值。例如,您可以選擇 5 分鐘選項來查看 1 分鐘會話的預期平均值,如果您執行代碼 5 分鐘。

匯出個人化資料

腳本偵測允許您將記錄的偵測資料匯出為 JSON 檔案。要在偵測會作業後匯出記錄資料:

  1. 在腳本調試器窗口上,單擊 匯出

  2. 在匯出窗口,選擇你想要匯出的調試會話。如果你想設置自定名稱,請重命名預設文件名稱。

  3. 點擊 匯出 以保存 JSON 文件。

    Example export window.

匯出的 JSON 檔案包含以下欄位:

  • 版本 :版本號碼。
  • 會話開始時間 : 以毫秒為單位的時戳,記錄會話開始時間。
  • 會話結束時間 : 以毫秒為單位的時戳,記錄會話結束時間。
  • 類別 : 在調試會話記錄的框架任作業類別的一個數組。每個入口包括:
    • 名稱 :每個框架任務類別的名稱。
    • 節點ID :任務類別(節點)的唯一標識符。它是 Nodes 陣列中的 1 基指數。例如,您可以使用 在 中找到節點的 123 個元素來查找 的節點。
  • 節點 :記錄在調試會作業中的節點數組。每個入口包括:
    • 總持續時間 :節點在微秒內花費的 CPU 時間量。
    • 功能ID :一個包含功能獨特標識符的數陣。
    • 節點ID :一個節點ID列表。
  • 功能 : 一個在調試會作業記錄的功能陣列。
    • 總持續時間 :功能在微秒內的 CPU 時間成本的數量。
    • 名稱 :如果可用,則為函數的名稱。
    • 來源 :如果可用的話,函數的來源。
    • :如果可用,函數的線號。
    • 旗幟 : 一個指示特定功能執行環境的位元字段。目前可以有以下值:
      • 0 : 第 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}
]
}