Lập trình sẵn

*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.

Script Profiler là một công cụ trong Developer Console để bạn có thể ghi lại phiên ghi profiling của tất cả các script đang chạy và xem chi phí CPU của chúng với cài đặt ghi lại và hiển thị tùy chỉnh. Nó có thể ghi lại tất cả các loại hành

Lưu tận tình huống

Trước khi ghi lại, bạn cần phải chọn môi trường ghi lại từ:

  • Client (Default) — Lưu tập lệnh bên kia khách hàng, bao gồm LocalScriptsScripts với 0> Class.BaseScript.RunContext|RunContext0> được đặt để 3> Enum.RunContext.Client|Client 3> .
  • Server — Lưu trình tại chỗ của các tập lệnh máy chủ, bao gồm Scripts với RunContext được đặt ở 0> Enum.RunContext.Server|Server0> hoặc 3> Enum

Bạn cũng có thể cài đặt các lựa chọn ghi âm sau đây:

Hành viTùy chọnMặc địnhMô tả
Tần số1000 lần mỗi giây (1 KHz)10,000 lần mỗi giây (10 KHz)1 KhzTần số 10 KHz có độ chính xác cao hơn, vì Script Profiler có thể không nhặt những gọi API thực hiện nhiều hơn tần số bạn đã chọn, nhưng nó cũng có chi phí hiệu suất cao hơn.
Thời lượng phiên1-minute5-minute10-minuteHướng dẫnTự độngTùy chọn hướng dẫn bạn phải dừng ghi lại thủ công.
Hành vi Khao Sát Trực TiếpMở/ĐóngTắtHành vi này thu thập và làm mới dữ liệu hồ sơ mỗi giây trong một phiên hồ sơ.

Để ghi lại một phiên tập trung mới:

  1. Mở rộng danh sách dépôt của các công cụ để chọn ScriptProfiler .

    Dropdown menu of all Developer Console tools with the ScriptProfiler option highlighted for selection.
  2. Mở rộng danh sách trượt tuyết client-server để chọn Client hoặc Server .

    Dropdown menu with Client and Server options for selection.
  3. (Tùy chọn) Kiểm tra Live kiểm tra để bật chức năng bầu chọn trực tiếp.

  4. (Tùy chọn) Chọn FreqTime để chọn tần số ghi lại và thời gian phiên hội thoả mãn nếu bạn không muốn sử dụng giá trị mặc định.

  5. Nhấp vào Bắt đầu để bắt đầu phiên tập trung. Nếu bạn thiết lập một thời gian, Script Profiler hiển thị một thời gian đếm ngược với thời gian còn lại trong phiên tập trung.

  6. Nhấp vào Dừng hoặc đợi cho đến khi hoàn thành ghi lại để hiển thị dữ liệu profiling.

Đọc dữ liệu xếp hạng

Sau khi một phiên hết, Script Profiler tạo một bảng cho thấy bao nhiêu thời gian mỗi cuộc gọi chức năng chi phí trong thời gian CPU. Bảng sắp xếp các cuộc gọi chức năng theo thời gian dành nhiều nhất đến ít nhất, và cho phép bạn tìm kiếm các chức năng cụ thể bằng tên của chúng. Nó cung cấ

  • Gọi biểu tượngCallgraph (Mặc định): Categorizes and displays function calls into a tree structure based on frame tasks. This view displays each task category as nodes under the same root and allows you to expand them to view functions. Bạn cũng có thể hover over any node in the tree to view file and line information. Ví dụ, Stepped/CameraInput/<anonymous> Example callgraph view of a profiling session.
  • Hàm hợp tác : Danh sách tất cả các hàm mà không phải tạo ra chúng theo các nhiệm vụ. Example functions view of a profiling session.

Bạn cũng có thể chọn từ các tùy chọn hiển thị dưới đây để tùy chỉnh các nhu cầu debug của bạn:

TênTùy chọnMặc địnhMô tả
Đơn vịMili giây (ms) Tỉ lệ (%)msHiển thị thời gian dành cho mỗi cuộc gọi API trong mili giây hoặc phần trăm của tổng phiên ghi lại.
Trung bìnhOff1-giây1-phút10-phútTắtTính toán thời gian trung bình được dành cho mỗi cuộc gọi API bằng giá trị đã được chọn. Nếu bạn chọn một tùy chọn dài hơn thời lượng phiên, Script profiler dự đoán thời lượng phiên để tính trung bình. Ví dụ, bạn có thể chọn tùy chọn 5 phút cho một phi

Xuất dữ liệu quản lý

Công cụ Phân tích kịch bản cho phép bạn xuất dữ liệu phân tích đã lưu thành một tập tin JSON. Để xuất dữ liệu phân tích sau một phiên tập huấn:

  1. Trên cửa sổ Script Profiler, hãy nhấp vào Xuất口 .

  2. Ở cửa sổ xuất, chọn phiên đoạn profiling bạn muốn xuất. Đổi tên tập tin mặc định nếu bạn muốn đặt một tên tùy chỉnh.

  3. Nhấp vào Xuất để lưu tập tin JSON.

    Example export window.

Cấu hồ sơ JSON được xuất bao gồm các trường sau đây:

  • Phiên bản: : Số phiên bản.
  • SessionStartTime : Một thời gian trong mili giây lưu trữ thời gian khởi động phiên.
  • SessionEndTime : Một thời gian trong mili giây lưu trữ thời gian kết thúc phiên.
  • Các danh mục : Một loạt các danh mục nhiệm vụ được ghi nhận trong phiên bản profiling. Mỗi một mục bao gồm:
    • Tên : Tên của mỗi loại công việc thể loại.
    • NodeId : Định danh độc nhất của một thể loại nhiệm vụ (节点). Đó là một 1-based index vào Nodes 阵列. Ví dụ, bạn có thể tìm kiếm th节点 bằng cách lấy NodeId của 0> 123
  • Hạch nhúc : Một hàng loạt các hạch nhúc được ghi nhận trong phiên bản profiling. Mỗi hàng loạt bao gồm:
    • Tổng thời gian : Số thời gian mà nút tiêu tốn trong thời gian CPU trong micro giây.
    • FunctionIds : Một dàn xếp hạng của các xác định độc nhất của các hàm.
    • NodeIds : Một dàn ID của các thành phần.
  • Hàm hợp chức năng : Một dãy hàm được ghi trong phiên bản profiling.
    • Tổng thời gian : Số thời gian mà chức năng chi phí trong thời gian CPU trong micro giây.
    • Tên : Tên của chức năng, nếu có.
    • Nguồn : Nguồn của chức năng, nếu có.
    • Dòng : Số dòng của chức năng, nếu có.
    • Cờ : Một chút trường thể hiện bất kỳ môi trường thực thi chức năng nào. Hiện tại có thể có những giá trị sau đây:
      • 0 : The 0th bit represents IsNative for execution under Native CodeGen.
      • 1 : The 1 th bit represents IsPlugin for execution as part of a plugin.
Dữ liệu Xuất của Hồ sơ Ví dụ

{
"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}
]
}