เครื่องมือโปรไฟล์ไมโคร MicroProfiler เป็นเครื่องมือเพื่อเพิ่มประสิทธิภาพและแก้ไขปัญหาที่มีอยู่ใน Roblox Studio และไคลเอนต์ Robloxมันให้ข้อมูลการจัดเวลารายละเอียดสำหรับ ตัวกำหนดเวลางาน ภารกิจที่เรียกว่า แท็ก
- สำหรับรายการของงานทั่วไป โปรดดูที่ แท็กการอ้างอิง
- สำหรับตัวอย่างขั้นตอนวิธีการใช้ MicroProfiler เพื่อระบุปัญหาประสิทธิภาพดูได้ที่ การเดินทาง MicroProfiler
พื้นฐานของ MicroProfiler
เพื่อเปิด MicroProfiler กด CtrlAltF6 ( ⌘⌥F6 ) ใน Studio หรือที่ไคลเอนต์คุณยังสามารถใช้เมนูการตั้งค่าในไคลเอนต์ได้
เมื่อเปิด แถบเมนูจะปรากฏที่ด้านบนของมุมมอง 3Dในโหมดเริ่มต้น แผ่นกราฟแถบเคลื่อนที่แสดงเวลาที่ใช้ในแต่ละเฟรมของตัวกำหนดการทํางาน

บาร์ควรอยู่รอบกลางของกราฟโดยทั่วไป แต่คุณอาจเห็นการเพิ่มขึ้นอย่างกะทันหัน (การเพิ่มขึ้นอย่างรวดเร็วในค่า)หนามบ่งบอกว่าใช้เวลามากขึ้นในการดําเนินการทําภารกิจบางอย่าง โดยปกติเนื่องจากภาระงานเพิ่มขึ้นตัวอย่างเช่นการสร้างชิ้นส่วนเคลื่อนที่จํานวนมากต้องใช้งานมากขึ้นจากการจําลองทางฟิสิกส์ซึ่งต่อมาต้องใช้เวลามากขึ้นในการประมวลผลการเคลื่อนไหวและการติดต่อส่วนภาพต่อไปแสดงตัวอย่างของสปายก์:

เพื่อหยุดการบันทึกเฟรม กด CtrlP ( ⌘P ) หรือคลิก หยุด ในแถบเมนูในขณะที่หยุดชั่วคราว เส้นเวลาจะปรากฏขึ้นและคุณสามารถนําทางผ่านเฟรมได้โดยคลิกหรือลากบนแผนภาพ
สำหรับสรุปแบบเต็มของมุมมองต่างๆ และวิธีการนําทางไปยังอินเทอร์เฟซ MicroProfiler ดู โหมด MicroProfiler
กระทู้
เช่นเดียวกับโปรแกรมจำนวนมาก Roblox ใช้หลายกระทู้เพื่อดําเนินการหลายขั้นตอนของงานในเวลาเดียวกันใน MicroProfiler โหมดรายละเอียดคุณสามารถดูป้ายชื่อสำหรับแต่ละกระทู้บนด้านซ้าย

มีสามประเภทกระทู้หลัก:
หลัก/เรนเดอร์ : บางทีอาจไม่ชัดเจน, ทำงานบน CPUประมวลผลการใส่ข้อมูล, Humanoids , แอนิเมชัน/ทวีนิ่ง, การเป็นเจ้าของฟิสิกส์, เสียง, และการรอให้สคริปต์ดำเนินการต่ออัปเดตอินเทอร์เฟซ Studio และประสานการทำงานของเธรดอื่นๆ ด้วย
คนงาน ("คนงาน RBX": ช่วยให้กระทู้หลักมีการเชื่อมต่อเครือข่าย ฟิสิกส์ และการค้นหาเส้นทางเนื่องจากจํานวนคอร์ในชิปประมวลผลรุ่นใหม่ คุณอาจมีหลายกระทู้ผู้ใช้ ซึ่งส่วนใหญ่อยู่ในสถานะการนอนหลับในเวลาใดก็ได้
เรนเดอร์ ("GPU"): ทำตามล็อกิก "เตรียม, ดำเนินการ, นำเสนอ" สื่อสารกับหน่วยประมวลผลกราฟิก (GPU) ของอุปกรณ์
- เตรียม: ข้อมูลจากกระทู้หลักจะถูกใช้เพื่ออัปเดตโมเดลการเรนเดอร์
- ดำเนินการ: เรนเดอร์คำสั่งปัญหารวมถึงอินเทอร์เฟซ 2D
- ปัจจุบัน: ซิงโครไนซ์กับ GPU
โปรไฟล์ที่กำหนดเอง
หากสคริปต์ของคุณกําลังดําเนินการภารกิจที่ซับซ้อน คุณสามารถโปรไฟล์ส่วนสําคัญของโค้ดเพื่อให้แน่ใจว่าพวกเขาไม่ใช้เวลานานเกินไปห่อโค้ดใน debug.profilebegin() และ debug.profileend() เพื่อเวลาทุกอย่างที่ทำระหว่างการเรียกฟังก์ชันเหล่านั้นและสร้างป้ายชื่อบนเวลาของ MicroProfiler
สคริปต์งานหนัก
debug.profilebegin("Hard Work")-- รหัสที่จะถูกโปรไฟล์debug.profileend()

มีหน่วยความจําจํากัดที่สามารถใช้กับฉลาก MicroProfiler ได้หากหน่วยความจํานี้หมดลง ป้ายชื่อโปรไฟล์ที่กําหนดเองอาจไม่ปรากฏเป็นชื่อที่มีความหมายในเวลาไลน์ใช้ฉลากน้อยลงเพื่อหลีกเลี่ยงปัญหานี้หากคุณไม่จำเป็นต้องโปรไฟล์ส่วนหนึ่งของรหัสของคุณอีกต่อไป ให้แสดงความคิดเห็นหรือลบการเรียกใช้ไปยังฟังก์ชันเหล่านี้
ตัวอย่าง
ตัวอย่างโค้ดด้านล่างเชื่อมโยงฟังก์ชันหลอกกับเหตุการณ์ RunService.PreSimulation ซึ่งทำงานในทุกเฟรมสิ่งที่ทำเสร็จบ่อยควรทำงานได้อย่างมีประสิทธิภาพมากที่สุดเท่าที่เป็นไปได้ดังนั้นฟังก์ชันนี้จึงเป็นตัวเลือกที่ดีสำหรับการโปรไฟล์
local RunService = game:GetService("RunService")
local function onPreSimulation()
debug.profilebegin("Hard Work")
-- งานหนักตัวอย่าง: สลับตัวแปรสองตัว 200,000 ครั้ง
local a, b = 0, 1
for _ = 1, 200000 do
a, b = b, a
end
debug.profileend()
end
RunService.PreSimulation:Connect(onPreSimulation)
เมื่อคุณเรียกใช้ประสบการณ์และหยุด MicroProfiler ( CtrlP หรือ ⌘P ), ป้ายชื่อที่กําหนดเองจะปรากฏภายใต้ป้ายชื่อ gameStepped

จากระยะเวลาบนเส้นเวลาคุณสามารถบอกได้ว่าฟังก์ชันกำลังใช้เวลาในการประมวลผลมากกว่าการดำเนินการอื่น ๆ
บันทึกข้อมูลกรอบ
หากต้องการบันทึกชุดข้อมูลกรอบสำหรับการตรวจทานในภายหลัง (หรือเพื่อแบ่งปันกับคนอื่น) ให้ใช้เมนู ส่งออก เครื่องบันทึกข้อมูลกรอบไปยังไฟล์ชื่อ microprofile-<date>-<time>.html ในไดเรกทอรีบันทึกของ Roblox
บน Windows ตรวจสอบ %LOCALAPPDATA%\Roblox\logs .
หากคุณใช้แอปพลิเคชัน Universal Windows Platform (UWP) ตรวจสอบ \Users\<username>\AppData\Local\Packages\ROBLOXCORPORATION.ROBLOX_<hash>\LocalState\logs\
บน macOS ตรวจสอบ ~/Library/Logs/Roblox
ไฟล์ HTML เหล่านี้ใช้ UI เว็บเดียวกัน เช่นเดียวกับการเชื่อมต่อสดสำหรับอุปกรณ์เคลื่อนที่ และ การดัมพ์เซิร์ฟเวอร์
อุปกรณ์มือถือโปรไฟล์
เพื่อเข้าถึง MicroProfiler จากไคลเอนต์มือถือคุณต้องเชื่อมต่ออุปกรณ์มือถือของคุณกับเครือข่ายเดียวกัน เช่นเดียวกับเครื่องพัฒนาของคุณ เปิดใช้งานไมโครโปรไฟล์ในเมนู การตั้งค่า ของอุปกรณ์มือถือ หลังจากเปิดใช้งานแล้ว เมนูจะแสดงที่อยู่ IP และหมายเลขพอร์ต

ตัวอย่างเช่นในภาพหน้าจอด้านบนที่อยู่คือ 192.168.1.166 และพอร์ตคือ 1338จากคอมพิวเตอร์บนเครือข่ายเดียวกัน นําทางไปที่ http://192.168.1.166:1338 สําหรับเวอร์ชัน ของอินเทอร์เฟซผู้ใช้ MicroProfiler บนเว็บ

โปรไฟล์เซิร์ฟเวอร์
นอกจากไคลเอนต์มาตรฐาน MicroProfiler คุณสามารถใช้การสำรองข้อมูลสั้น ๆ ของกิจกรรมเซิร์ฟเวอร์โดยใช้ไมโครโปรไฟล์เซิร์ฟเวอร์ได้
ในประสบการณ์ที่คุณมีสิทธิ์แก้ไขสิทธิ์ เปิดคอนโซลนักพัฒนาด้วย CtrlAltF9
ในเมนูการเลื่อนลง เลือก MicroProfiler 3. ในส่วน โปรไฟล์เซิร์ฟเวอร์ ระบุจํานวนเฟรมต่อวินาที (สูงสุด 60) และจํานวนวินาทีที่จะโปรไฟล์ (สูงสุด 4)
คลิก เริ่มบันทึก .
หลังจากไม่กี่วินาที คอนโซลนักพัฒนาจะให้เส้นทางไปยังไฟล์ซึ่งเป็นเส้นทางเดียวกับการส่ง ขยะมาตรฐาน
ใช้ UI เว็บ
ท่ัวไปUI เว็บของ MicroProfiler ทำงานคล้ายกับ โหมดรายละเอียด แต่มีคุณสมบัติเพิ่มเติมสองสามอย่าง:
นอกจากการกรองโดยกลุ่มแล้ว คุณยังสามารถกรองโดยกระทู้ได้
ใช้ CtrlF / ⌘F เพื่อกระโดดไปยังการเกิดขึ้นของงานที่ใช้เวลามากที่สุดในการส่งออกตัวอย่างเช่น computeLightingPerform ทำงานในทุกกรอบหากคุณค้นหาในกองขยะที่มี 128 เฟรมคุณสามารถกระโดดไปที่เฟรมที่ใช้เวลานานที่สุดในการเสร็จสมบูรณ์
ใช้เมนู เอกซ์เรย์ เพื่อเปิดใช้งานหรือปิดการใช้งานการจัดระเบียบสีสำหรับการจัดสรรหน่วยความจำ
- กรอบไฟเบาภายในกราฟแถบหลักบ่งบอกถึงการจัดสรรหน่วยความจําที่สูงขึ้น
- ส่วนที่เบากว่าของแถบตัวอย่างและฉลากเบากว่าบนเส้นเวลาบ่งบอกถึงส่วนของกรอบที่มีการจัดสรรหน่วยความจำสูงกว่า
- ในโหมดรังสีเอกซ์ กด C เพื่อแสดงขนาดทั้งหมดของการจัดสรรหน่วยความจำแทนจำนวนการจัดสรร
ใช้เมนูส่งออก ส่งออก เพื่อส่งออกกราฟภาพความร้อนของ CPU หรือหน่วยความจําที่เกี่ยวข้องกับการโทรทั้งหมดที่รวมอยู่ในการดัมพ์ รักษาลําดับชั้นพ่อ-ลูกและขนาดของพวกเขาตามระยะเวลากราฟเปลวไฟมีประโยชน์เป็นพิเศษในการระบุภารกิจที่ไม่ใช้เวลานานเป็นพิเศษในการดำเนินการ (และดังนั้นจึงยากที่จะสังเกตเห็น) แต่ทำงานบ่อยเกินไปที่เวลาในการประมวลผลของพวกเขาจะกลายเป็นสิ่งสำคัญ
คุณยังสามารถสร้างแผนภาพไฟใน Studio แม้ว่าจะเป็นเพียงสำหรับสคริปต์ (เวลาการดําเนินการและการจัดสรรหน่วยความจํา)เมื่อเทียบกับแผ่นภาพเปลวไฟแบบเว็บ แผ่นใน Studio อยู่ด้านบนแทนที่จะเป็นด้านล่างและสนับสนุนเวลาการจับภาพที่ยาวนานขึ้นอย่างมาก
ลากและวางไฟล์ขยะที่สองลงในอินเทอร์เฟซผู้ใช้เว็บเพื่อสร้างกราฟไฟล์ที่แตกต่างซึ่งสามารถช่วยให้คุณระบุการปรับปรุงหรือการย้อนกลับของประสิทธิภาพประสบการณ์ของคุณในเวลาที่ผ่านมาคลิก รวมและเปรียบเทียบ เพื่อส่งออกไฟล์ HTML ใหม่
กราฟไฟล์แตกต่างเน้นไปที่การทิ้งขยะ (ซ้ายหรือขวา) ที่ใช้หน่วยประมวลผลหรือหน่วยความจำมากขึ้น ด้วยสีสดใสที่บ่งบอกถึงความแตกต่างที่ใหญ่ขึ้น