โปรไฟล์สคริปต์ เป็นเครื่องมือใน คอนโซลผู้พัฒนา ที่ช่วยให้คุณบันทึกเซสชันการโปรไฟล์ของสคริปทั้งหมดและดูค่าใช้จ่ายของ CPU ด้วยกา
บันทึกโปรไฟลิ่งเซสชัน
ก่อนที่จะบันทึกต้องเลือกสภาพแวดล้อมในการบันทึกจาก:
- ลูกค้า (ค่าเริ่มต้น) — บันทึกสคริปต์ด้านลูกค้ารวมถึง LocalScripts และ Scripts ด้วย 0> Class.BaseScript.RunContext|RunContext0> ตั้งค่าไว้ที่ <
- เซิร์ฟเวอร์ — บันทึกสคริปต์ด้านเซิร์ฟเวอร์รวมถึง Scripts ด้วย RunContext ตั้งค่าไว้ที่ 0> Enum.RunContext.
คุณยังสามารถตั้งค่าตัวเลือกการบันทึกต่อไปนี้:
พฤติกรรม | ตั้งค่า | เริ่มต้น | คำอธิบาย |
---|---|---|---|
ความถี่ | 1000 ครั้งต่อวินาที (1 KHz)10,000 ครั้งต่อวินาที (10 KHz) | 1 กิโหวต | ความถี่ 10 KHz มีความนิ่งสูงขึ้นเนื่องจากสคริปต์โปรไฟล์อาจไม่สามารถเก็บโทรกเทิร์น API ที่ดำเนินการบ่อยกว่าความถี่ที่คุณเลือก แต่มันยังมีค่าใช้จ่ายในการประมวลผลสูงขึ้น |
ระยะเวลาของเซสชัน | 1 นาที5 นาที10 นาทีคู่มือ | คู่มือ | ตัวเลือกคู่มือต้องการให้คุณหยุดบันทึกโดยใช้มือ |
พฤติกรรมการโหวต | เปิด/ปิด | ปิด | พฤติกรรมนี้จะรวบรวมและรีเฟรชข้อมูลโปรไฟล์ในแต่ละวินาทีในระหว่างเซสชันโปรไฟล์ |
เพื่อบันทึกเซสชันใหม่:
เปิด คอนโซลผู้พัฒนา
ขยายรายการดรอปดาวน์เพื่อเลือก ScriptProfiler
ขยายรายการลูกล้างของลูกค้า-เซิร์ฟเวอร์เพื่อเลือก ลูกค้า หรือ เซิร์ฟเวอร์
(อpcional) ตรวจสอบกล่องเรือ ไลฟ์ เพื่อเปิดใช้งานพฤติกรรมการโหวดแบบไลฟ์
(อpcional) เลือก Freq และ Time เพื่อเลือกความถี่การบันทึกและเวลาเซสชันหากคุณไม่ต้องการใช้ค่าเริ่มต้น
คลิก เริ่ม เพื่อเริ่มเซสชันสแตตัสของโปรไฟล์ หากคุณตั้งค่าระยะเวลาให้เวลาเริ่มต้นของสคริปต์โปรไฟล์จะปรากฏในระเบียบานของเซสชัน Thai:คลิก เริ่ม เพื่อเริ่มเซสชันสแตตัสของโปรไฟล์ หากคุณตั
คลิก หยุด หรือรอจนกว่าจะเสร็จสิ้นการบันทึกเพื่อแสดงผลลัพธ์การวิเคราะห์
การอ่านข้อมูลโปรไฟลิ่ง
หลังจากที่เซสชันสิ้นสุดลง โปรไฟล์สคริปต์จะสร้างตารางที่แสดงว่าต้องใช้เวลาเท่าไหร่สำหรับแต่ละการเรียกในเวลาของ CPU ตารางจัดเรียงการเรียกตามเวลาที่ใช้มากที่สุดไปยังน้อยที่สุ
- คอลล์กราฟ (ค่าเริ่มต้น): จัดหมวดหมู่และแสดงระเบียบายการเรียกใช้งานในรูปแบบต้นไม้ตามภารกิจเฟรม วิวนี้จะแส
- ฟังก์ชัน : รายการฟังก์ชันทั้งหมดโดยไม่จัดหมวดหมู่ตามภารกิจ
คุณยังสามารถเลือกจากตัวเลือกการแสดงต่อไปนี้เพื่อปรับแต่งความต้องการในการดีบั๊กของคุณ:
ชื่อ | ตั้งค่า | เริ่มต้น | คำอธิบาย |
---|---|---|---|
ยูนิต | อืม (วินาที) ร้อยละ (%) | นางสาว | บ่งบอกเวลาที่ใช้ในแต่ละการโทร API ใน milliseconds หรือ percentages ของเซสชันบันทึกทั้งหมด |
เฉลี่ย | Off1-วินาที1-นาที10-นาที | ปิด | คํานวณเวลาเฉลี่ยที่ใช้ในแต่ละการโทร API โดยมีค่าที่เลือก หากคุณเลือกตัวเลือกที่ยาวนานกว่าระยะเวลาเซสชัน สกริปต์ profiler จะคํานวณระยะเวลาเซสชันเพื่อคํานวณระ |
การส่งออกข้อมูลการวิเคราะห์
สคริปต์ Profiler ช่วยให้คุณสามารถส่งออกข้อมูลโปรไฟล์ที่บันทึกเป็นไฟล์ JSON ได้ เพื่อส่งออกข้อมูลโปรไฟล์หลังจากเซสชันโปรไฟล์:
ในหน้าต่าง Script Profiler คลิก ส่งออก 2. ในหน้าต่างการส่งออก เลือกเซสชันโปรไฟล์ที่คุณต้องการส่งออก เปลี่ยนชื่อไฟล์เริ่มต้นหากคุณต้องการตั้งชื่อให้กับชื่อที่กำหนดเอง
คลิก ส่งออก เพื่อบันทึกไฟล์ JSON
ไฟล์ JSON ที่ส่งออกรวมถึงสาขาต่อไปนี้:
- เวอร์ชัน : เลขเวอร์ชัน
- SessionStartTime : เวลาที่แม่นยำในมิลลิวินาทีที่บันทึกเวลาเริ่มต้นของเซสชัน
- SessionEndTime : เวลาที่ทำเครื่องหมายในมิลลิวินาทีที่บันทึกเวลาที่สิ้นสุดของเซสชัน
- หมวดหมู่ : รายการหมาดหมู่งานเค้าโครงที่บันทึกในเซสชันสรุป แต่ละรายการรวมถึง:
- ชื่อ : ชื่อแต่ละหมวดหมู่ของภารกิจ
- รหัสอินทราแล็กซ์ของโน้ตดอลลาร์สหรัฐ (หน่วยความจําเฉพาะของโน้ต) เป็นตัวเลข 1 ตัวในค่า Nodes ของ 123 โดยการดึงค่
- โน้ดส์ : รายการโน้ดที่บันทึกในเซสชันสแน็ปช็อต แต่ละรายการรวมถึง:
- ระยะเวลาทั้งหมด : จํานวนเวลาที่ต้องใช้ในเวลานานาวินาทีในการประมวลผล
- FunctionIds : รายการตัวเลขอิденติฟิกเฉพาะของฟังก์ชัน
- NodeIds : รายการของไอดีโนด
- ฟังก์ชัน : รายการฟังก์ชันที่บันทึกไว้ในเซสชันโปรไฟลิ่ง
- ระยะเวลาทั้งหมด : จำนวนเวลาที่ต้องใช้ในการประมวลผลในเวลาของ microseconds
- ชื่อ : ชื่อของฟังก์ชัน หากมี
- ที่มา : ที่มาของฟังก์ชัน หากมี
- เส้น : เลขเส้นของฟังก์ชัน หากมี
- ธง : ส่วนตรวจสอบขนาดเล็กที่แสดงสภาพแวดล้อมการประมวลผลใด ๆ ได้ ขณะนี้สามารถมีค่าต่อไปนี้ได้:
- 0 : บิทที่ 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}
]
}