โปรแกรมจัดโปรไฟล์สคริปต์ เป็นเครื่องมือภายใน 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 นาที การตั้งค่าเอง | การตั้งค่าเอง | ตัวเลือกการตั้งค่าเองจะต้องให้คุณหยุดการบันทึกด้วยมือ |
| พฤติกรรมการสำรวจสด | เปิด ปิด | ปิด | พฤติกรรมนี้จะสำรวจและรีเฟรชข้อมูลการจัดโปรไฟล์ทุกวินาทีในระหว่างเซสชันการจัดโปรไฟล์ |
เพื่อบันทึกเซสชันการจัดโปรไฟล์ใหม่:
เปิด Developer Console.
ขยายเมนูเครื่องมือเพื่อเลือก ScriptProfiler.

ขยายเมนูดรอปดาวน์ client-server เพื่อเลือก Client หรือ Server.

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

- Functions: แสดงรายการฟังก์ชันทั้งหมดโดยไม่จัดประเภทตามงาน.

คุณยังสามารถเลือกจากตัวเลือกการแสดงผลดังต่อไปนี้เพื่อปรับให้เหมาะกับความต้องการในการแก้ไขข้อบกพร่องของคุณ:
| ชื่อ | ตัวเลือก | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
| หน่วย | มิลลิวินาที (ms) เปอร์เซ็นต์ (%) | ms | แสดงเวลาที่ใช้ในการเรียก API แต่ละรายการในมิลลิวินาทีหรือเปอร์เซ็นต์ของเซสชันการบันทึกทั้งหมด |
| เฉลี่ย | ปิด 1 วินาที 1 นาที 5 นาที 10 นาที | ปิด | คำนวณเวลาเฉลี่ยที่ใช้ในการเรียก API แต่ละรายการตามค่าที่เลือก หากคุณเลือกตัวเลือกที่นานกว่าระยะเวลาเซสชัน โปรแกรมจัดโปรไฟล์สคริปต์จะคำนวณระยะเวลาเซสชันเพื่อคำนวณค่าเฉลี่ย ตัวอย่างเช่น คุณสามารถเลือกตัวเลือก 5 นาทีสำหรับเซสชัน 1 นาทีเพื่อดูค่าเฉลี่ยที่คาดหวังหากคุณรันโค้ดเป็นเวลา 5 นาที |
ส่งออกข้อมูลการจัดโปรไฟล์
โปรแกรมจัดโปรไฟล์สคริปต์ช่วยให้คุณสามารถส่งออกข้อมูลการจัดโปรไฟล์ที่บันทึกไว้ในรูปแบบไฟล์ JSON เพื่อส่งออกข้อมูลที่บันทึกหลังจากเซสชันการจัดโปรไฟล์:
ในหน้าต่างโปรแกรมจัดโปรไฟล์สคริปต์ คลิก Export.
ในหน้าต่างส่งออก เลือกเซสชันการจัดโปรไฟล์ที่คุณต้องการส่งออก เปลี่ยนชื่อไฟล์เริ่มต้นหากคุณต้องการตั้งชื่อเอง
คลิก 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}
]
}