เครื่องมือโปรไฟล์สคริปต์

*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่

เครื่องมือโปรไฟล์สคริปต์ เป็นเครื่องมือภายใน Developer Console ที่ช่วยให้คุณบันทึกเซสชันการโปรไฟล์ของสคริปต์ทั้งหมดที่กำลังทำงานอยู่และดูค่าใช้จ่ายเวลา CPU ของพวกเขาด้วยการตั้งค่าการบันทึกและการแสดงผลที่กำหนดเอง มันสามารถบันทึกการเรียกฟังก์ชันทุกประเภท รวมถึงฟังก์ชัน Luau, การเรียกเมธอด และการเข้าถึงคุณสมบัติ เครื่องมือนี้มีประโยชน์ในการระบุสคริปต์ที่ใช้ทรัพยากร CPU มากที่สุดและทำให้ประสิทธิภาพช้าลง

บันทึกเซสชันการโปรไฟล์

ก่อนที่จะบันทึก คุณต้องเลือกสภาพแวดล้อมการบันทึกจาก:

  • Client (ค่าเริ่มต้น) — บันทึกสคริปต์ด้านลูกค้า รวมถึง LocalScripts และ Scripts ที่มี RunContext ตั้งค่าเป็น Client
  • Server — บันทึกสคริปต์ด้านเซิร์ฟเวอร์ รวมถึง Scripts ที่มี RunContext ตั้งค่าเป็น Server หรือ Legacy เครื่องมือโปรไฟล์สคริปต์จะลบข้อมูลด้านเซิร์ฟเวอร์ทั้งหมดที่รวบรวมได้เมื่อสิ้นสุดเซสชันแต่ละครั้ง

คุณยังสามารถตั้งค่าตัวเลือกการบันทึกต่อไปนี้:

พฤติกรรมตัวเลือกค่าเริ่มต้นคำอธิบาย
ความถี่1000 ครั้งต่อวินาที (1 KHz)
10,000 ครั้งต่อวินาที (10 KHz)
1 KHzความถี่ 10 KHz มีความแม่นยำสูงกว่า เนื่องจากเครื่องมือโปรไฟล์สคริปต์อาจไม่สามารถจับการเรียก API ที่ทำงานบ่อยกว่าความถี่ที่คุณเลือก แต่ก็มีค่าใช้จ่ายด้านประสิทธิภาพที่สูงกว่าเช่นกัน
ความยาวเซสชัน1 นาที
5 นาที
10 นาที
แบบแมนนวล
แบบแมนนวลตัวเลือกแบบแมนนวลต้องการให้คุณหยุดการบันทึกด้วยตนเอง
พฤติกรรมการสำรวจสดเปิด
ปิด
ปิดพฤติกรรมนี้จะสำรวจและรีเฟรชข้อมูลการโปรไฟล์ทุกวินาทีในระหว่างเซสชันการโปรไฟล์

ในการบันทึกเซสชันการโปรไฟล์ใหม่:

  1. เปิด Developer Console.

  2. ขยายเมนูเครื่องมือเพื่อเลือก ScriptProfiler.

    เมนูดรอปดาวน์ของเครื่องมือ Developer Console ทั้งหมดที่มีตัวเลือก ScriptProfiler เน้นสำหรับการเลือก.
  3. ขยายเมนูดรอปดาวน์ลูกค้า-เซิร์ฟเวอร์เพื่อเลือก Client หรือ Server.

    เมนูดรอปดาวน์ที่มีตัวเลือก Client และ Server สำหรับการเลือก.
  4. OPTIONAL
    ตรวจสอบช่องทำเครื่องหมาย Live เพื่อเปิดใช้งานพฤติกรรมการสำรวจสด

  5. OPTIONAL
    เลือก Freq และ Time เพื่อเลือกความถี่การบันทึกและความยาวเซสชันหากคุณไม่ต้องการใช้ค่าที่ตั้งไว้เริ่มต้น

  6. คลิก Start เพื่อเริ่มเซสชันการโปรไฟล์ หากคุณตั้งค่าระยะเวลา เครื่องมือโปรไฟล์สคริปต์จะแสดงตัวนับถอยหลังพร้อมเวลาที่เหลือในเซสชัน

  7. คลิก Stop หรือรอจนกว่าการบันทึกจะเสร็จสิ้นเพื่อแสดงข้อมูลการโปรไฟล์

อ่านข้อมูลการโปรไฟล์

หลังจากเซสชันหยุด เครื่องมือโปรไฟล์สคริปต์จะสร้างตารางที่แสดงว่าแต่ละการเรียกฟังก์ชันใช้เวลา CPU เท่าใด ตารางจะจัดเรียงการเรียกฟังก์ชันจากการใช้เวลามากที่สุดไปยังการใช้เวลาน้อยที่สุด และอนุญาตให้คุณค้นหาฟังก์ชันเฉพาะตามชื่อของพวกเขา มันให้มุมมองสองแบบดังต่อไปนี้:

  • Callgraph (ค่าเริ่มต้น): จัดประเภทและแสดงการเรียกฟังก์ชันในโครงสร้างต้นไม้ตามงานเฟรม มุมมองนี้จะแสดงหมวดหมู่ของแต่ละงานเป็นโหนดภายใต้รากเดียวกันและอนุญาตให้คุณขยายเพื่อดูฟังก์ชัน คุณยังสามารถชี้ไปที่โหนดใด ๆ ในต้นไม้เพื่อดูข้อมูลไฟล์และบรรทัด ตัวอย่างเช่น Stepped/CameraInput/<anonymous> อาจเปิดเผย Players.[LocalPlayer].PlayerScripts.PlayerModule.CameraModule.CameraInput:125. มุมมอง callgraph ตัวอย่างของเซสชันการโปรไฟล์.
  • Functions: แสดงรายการฟังก์ชันทั้งหมดโดยไม่จัดประเภทตามงาน มุมมองฟังก์ชันตัวอย่างของเซสชันการโปรไฟล์.

คุณยังสามารถเลือกจากตัวเลือกการแสดงผลต่อไปนี้เพื่อปรับแต่งความต้องการในการดีบักของคุณ:

ชื่อตัวเลือกค่าเริ่มต้นคำอธิบาย
หน่วยมิลลิวินาที (ms)
เปอร์เซ็นต์ (%)
msแสดงเวลาที่ใช้ในการเรียก API แต่ละรายการในมิลลิวินาทีหรือเปอร์เซ็นต์ของเซสชันการบันทึกทั้งหมด
ค่าเฉลี่ยปิด
1 วินาที
1 นาที
5 นาที
10 นาที
ปิดคำนวณค่าเฉลี่ยเวลาที่ใช้ในการเรียก API แต่ละรายการตามค่าที่เลือก หากคุณเลือกตัวเลือกที่ยาวกว่าความยาวเซสชัน เครื่องมือโปรไฟล์สคริปต์จะคำนวณความยาวเซสชันเพื่อคำนวณค่าเฉลี่ย ตัวอย่างเช่น คุณสามารถเลือกตัวเลือก 5 นาทีสำหรับเซสชัน 1 นาทีเพื่อดูค่าคาดหวังเฉลี่ยหากคุณรันโค้ดเป็นเวลา 5 นาที

ส่งออกข้อมูลการโปรไฟล์

เครื่องมือโปรไฟล์สคริปต์อนุญาตให้คุณส่งออกข้อมูลการโปรไฟล์ที่บันทึกไว้เป็นไฟล์ JSON เพื่อส่งออกข้อมูลที่บันทึกหลังจากเซสชันการโปรไฟล์:

  1. ในหน้าต่างเครื่องมือโปรไฟล์สคริปต์ คลิก Export.

  2. ในหน้าต่างการส่งออก ให้เลือกเซสชันการโปรไฟล์ที่คุณต้องการส่งออก เปลี่ยนชื่อไฟล์เริ่มต้นหากคุณต้องการตั้งชื่อที่กำหนดเอง

  3. คลิก Export เพื่อบันทึกไฟล์ JSON

    หน้าต่างส่งออกตัวอย่าง.

ไฟล์ JSON ที่ส่งออกจะรวมถึงฟิลด์ต่อไปนี้:

  • Version: หมายเลขเวอร์ชัน
  • SessionStartTime: แท็กเวลาในมิลลิวินาทีที่บันทึกเวลาที่เริ่มเซสชัน
  • SessionEndTime: แท็กเวลาในมิลลิวินาทีที่บันทึกเวลาที่สิ้นสุดเซสชัน
  • Categories: อาร์เรย์ของหมวดหมู่งานเฟรมที่บันทึกในเซสชันการโปรไฟล์ แต่ละรายการรวมถึง:
    • Name: ชื่อของแต่ละหมวดหมู่งานเฟรม
    • NodeId: ตัวระบุที่ไม่ซ้ำกันของหมวดหมู่งาน (โหนด) เป็นดัชนีที่เริ่มต้นจาก 1 ในอาร์เรย์ Nodes ตัวอย่างเช่น คุณสามารถค้นหาโหนดที่มี NodeId เป็น 123 โดยการดึงองค์ประกอบที่ 123 ใน Nodes
  • Nodes: อาร์เรย์ของโหนดที่บันทึกในเซสชันการโปรไฟล์ แต่ละรายการรวมถึง:
    • TotalDuration: จำนวนเวลาที่โหนดใช้ในเวลา CPU ในไมโครวินาที
    • FunctionIds: อาร์เรย์ของตัวระบุที่ไม่ซ้ำกันของฟังก์ชัน
    • NodeIds: อาร์เรย์ของ Node IDs
  • Functions: อาร์เรย์ของฟังก์ชันที่บันทึกในเซสชันการโปรไฟล์
    • TotalDuration: จำนวนเวลาที่ฟังก์ชันใช้ในเวลา CPU ในไมโครวินาที
    • Name: ชื่อของฟังก์ชัน หากมี
    • Source: แหล่งที่มาของฟังก์ชัน หากมี
    • Line: หมายเลขบรรทัดของฟังก์ชัน หากมี
    • Flags: ฟิลด์บิตที่ระบุสภาพแวดล้อมการดำเนินการของฟังก์ชันเฉพาะ ปัจจุบันสามารถมีค่าดังต่อไปนี้:
      • 0: บิตที่ 0 แทน IsNative สำหรับการดำเนินการภายใต้ Native CodeGen
      • 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}
]
}
©2026 Roblox Corporation. Roblox, โลโก้ Roblox และ Powering Imagination เป็นส่วนหนึ่งของเครื่องหมายการค้าที่จดทะเบียน และไม่ได้จดทะเบียนของเราในสหรัฐฯ และประเทศอื่นๆ