腳本分析器

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

腳本採集器開發者控制器 中的工具,可以讓您記錄所有運行的腳本並檢視其 CPU 時間成本,並且可以使用自訂的儲存和顯示設定來查看腳本的掌握時間。它可以記錄所有類型的功能呼叫,包括 Luau 功能、方法呼叫和屬性

錄製詳細資料會議

在錄制之前,您需要選擇錄制環境:

  • 客戶端 (預設) — 記錄客戶端的脚本,包括 LocalScriptsScripts 以及 0> Class.BaseScript.RunContext|RunContext0> 設置在 3> enum.runContext.客戶端|客戶端 3> 上。
  • 伺服器 — 記錄伺服器側的指令碼,包括 ScriptsRunContext 設定為 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 分 手動手動手動選項需要您手動停止捕捉。
實時投票行為開關此行為會在每秒鐘採集和重新處理詳細資料。

要記錄新的個人檔案會作業:

  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. (可選) 選擇 FreqTime 來選擇錄像頻率和會議時間長度,如果你不想使用預設值。

  6. 單擊 開始 以開始 profiling 會作業。如果您設定了持續時間,Script Profiler 會顯示剩餘時間在會作業中。

  7. 按一下 停止 或等待錄像完成,以顯示詳細資料。

閱取個人資料

會議結束後,Script 分析器會生成一張表,顯示每個功能的時間成本。表會按最大時間從最少時間的順序排列功能呼叫,並允許您按名稱搜尋特定功能。它提供以下兩個視圖:

  • 調整圖形 (預設): 類別化並顯示功能呼叫以樹狀結構。這個視窗會顯示每個訪問類別的節點,並允許您擴展它們以檢視功能。您也可以將鼠標指针指向樹狀結構中的任何節點以檢視文件和 Example callgraph view of a profiling session.
  • 函數 : 列出所有功能,而不分類為任務。 Example functions view of a profiling session.

您也可以從以下顯示選項中選擇以適應您的Debug需求:

名稱選項預設說明
單位毫秒 (ms)百分比 (%)毫秒顯示每個 API 呼叫的時間以百萬秒或總記錄時作業的百分比。
平均關1-秒1-分鐘5-分鐘10-分鐘根據選擇的值計算每個 API 呼叫的平均時間。如果你選擇一個選項,其長度超過會話長度,Script profiler 會對會話長度進行估算,以計算平均值。例如,你可以選擇 5 分鐘的選項來計算 1 分鐘的平均值,如果你在 5 分鐘內執行代碼。

輸出個人資料

腳本檢查器允許您將儲存的分析資料匯出為JSON文件。要在分析會作業後匯出儲存的資料:

  1. 指令碼分析器 窗口中,按一下 輸出。

  2. 在輸出窗口中選擇要輸出的詳細會話。如果你想設定自訂名稱,請重新命名預設名稱。

  3. 按一下 導出 以儲存 JSON 檔案。

    Example export window.

出口的 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}
]
}