โปรแกรมจัดโปรไฟล์สคริปต์

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

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

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

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

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

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

พฤติกรรมตัวเลือกค่าเริ่มต้นคำอธิบาย
ความถี่1,000 ครั้งต่อวินาที (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.

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

  5. (ไม่บังคับ) เลือก 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: เวลาที่ใช้ในโหนดในหน่วยไมโครวินาที
    • FunctionIds: อาร์เรย์ของรหัสเฉพาะของฟังก์ชัน
    • NodeIds: อาร์เรย์ของรหัสโหนด
  • Functions: อาร์เรย์ของฟังก์ชันที่บันทึกในเซสชันการจัดโปรไฟล์
    • TotalDuration: เวลาที่ใช้ในฟังก์ชันในหน่วยไมโครวินาที
    • 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 เป็นส่วนหนึ่งของเครื่องหมายการค้าที่จดทะเบียน และไม่ได้จดทะเบียนของเราในสหรัฐฯ และประเทศอื่นๆ