ไมโครโปรไฟล์เลอร์

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

เครื่องมือโปรไฟล์ไมโคร MicroProfiler เป็นเครื่องมือเพื่อเพิ่มประสิทธิภาพและแก้ไขปัญหาที่มีอยู่ใน Roblox Studio และไคลเอนต์ Robloxมันให้ข้อมูลการจัดเวลารายละเอียดสำหรับ ตัวกำหนดเวลางาน ภารกิจที่เรียกว่า แท็ก

พื้นฐานของ MicroProfiler

เพื่อเปิด MicroProfiler กด CtrlAltF6 ( F6 ) ใน Studio หรือที่ไคลเอนต์คุณยังสามารถใช้เมนูการตั้งค่าในไคลเอนต์ได้

เมื่อเปิด แถบเมนูจะปรากฏที่ด้านบนของมุมมอง 3Dในโหมดเริ่มต้น แผ่นกราฟแถบเคลื่อนที่แสดงเวลาที่ใช้ในแต่ละเฟรมของตัวกำหนดการทํางาน

The Microprofiler frame graph, showing blue frames and detailed frame information.

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

The Microprofiler with several bars higher than others.

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

สำหรับสรุปแบบเต็มของมุมมองต่างๆ และวิธีการนําทางไปยังอินเทอร์เฟซ MicroProfiler ดู โหมด MicroProfiler

กระทู้

เช่นเดียวกับโปรแกรมจำนวนมาก Roblox ใช้หลายกระทู้เพื่อดําเนินการหลายขั้นตอนของงานในเวลาเดียวกันใน MicroProfiler โหมดรายละเอียดคุณสามารถดูป้ายชื่อสำหรับแต่ละกระทู้บนด้านซ้าย

The lefthand side of the Microprofiler detailed view, with rows for threads.

มีสามประเภทกระทู้หลัก:

  • หลัก/เรนเดอร์ : บางทีอาจไม่ชัดเจน, ทำงานบน CPUประมวลผลการใส่ข้อมูล, Humanoids , แอนิเมชัน/ทวีนิ่ง, การเป็นเจ้าของฟิสิกส์, เสียง, และการรอให้สคริปต์ดำเนินการต่ออัปเดตอินเทอร์เฟซ Studio และประสานการทำงานของเธรดอื่นๆ ด้วย

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

  • เรนเดอร์ ("GPU"): ทำตามล็อกิก "เตรียม, ดำเนินการ, นำเสนอ" สื่อสารกับหน่วยประมวลผลกราฟิก (GPU) ของอุปกรณ์

    • เตรียม: ข้อมูลจากกระทู้หลักจะถูกใช้เพื่ออัปเดตโมเดลการเรนเดอร์
    • ดำเนินการ: เรนเดอร์คำสั่งปัญหารวมถึงอินเทอร์เฟซ 2D
    • ปัจจุบัน: ซิงโครไนซ์กับ GPU

โปรไฟล์ที่กำหนดเอง

หากสคริปต์ของคุณกําลังดําเนินการภารกิจที่ซับซ้อน คุณสามารถโปรไฟล์ส่วนสําคัญของโค้ดเพื่อให้แน่ใจว่าพวกเขาไม่ใช้เวลานานเกินไปห่อโค้ดใน debug.profilebegin() และ debug.profileend() เพื่อเวลาทุกอย่างที่ทำระหว่างการเรียกฟังก์ชันเหล่านั้นและสร้างป้ายชื่อบนเวลาของ MicroProfiler

สคริปต์งานหนัก

debug.profilebegin("Hard Work")
-- รหัสที่จะถูกโปรไฟล์
debug.profileend()
A custom label on the detailed view of the MicroProfiler.

มีหน่วยความจําจํากัดที่สามารถใช้กับฉลาก 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

Many labels on the MicroProfiler, with a custom label taking up the majority of the processing time.

จากระยะเวลาบนเส้นเวลาคุณสามารถบอกได้ว่าฟังก์ชันกำลังใช้เวลาในการประมวลผลมากกว่าการดำเนินการอื่น ๆ

บันทึกข้อมูลกรอบ

หากต้องการบันทึกชุดข้อมูลกรอบสำหรับการตรวจทานในภายหลัง (หรือเพื่อแบ่งปันกับคนอื่น) ให้ใช้เมนู ส่งออก เครื่องบันทึกข้อมูลกรอบไปยังไฟล์ชื่อ 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 และหมายเลขพอร์ต

A picture of the Settings menu on mobile, showing how to enable the MicroProfiler.

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

The MicroProfiler web view.

โปรไฟล์เซิร์ฟเวอร์

นอกจากไคลเอนต์มาตรฐาน MicroProfiler คุณสามารถใช้การสำรองข้อมูลสั้น ๆ ของกิจกรรมเซิร์ฟเวอร์โดยใช้ไมโครโปรไฟล์เซิร์ฟเวอร์ได้

  1. ในประสบการณ์ที่คุณมีสิทธิ์แก้ไขสิทธิ์ เปิดคอนโซลนักพัฒนาด้วย CtrlAltF9

  2. ในเมนูการเลื่อนลง เลือก MicroProfiler 3. ในส่วน โปรไฟล์เซิร์ฟเวอร์ ระบุจํานวนเฟรมต่อวินาที (สูงสุด 60) และจํานวนวินาทีที่จะโปรไฟล์ (สูงสุด 4)

  3. คลิก เริ่มบันทึก .

    The Developer Console MicroProfiler screen.

    หลังจากไม่กี่วินาที คอนโซลนักพัฒนาจะให้เส้นทางไปยังไฟล์ซึ่งเป็นเส้นทางเดียวกับการส่ง ขยะมาตรฐาน

ใช้ UI เว็บ

ท่ัวไปUI เว็บของ MicroProfiler ทำงานคล้ายกับ โหมดรายละเอียด แต่มีคุณสมบัติเพิ่มเติมสองสามอย่าง:

  • นอกจากการกรองโดยกลุ่มแล้ว คุณยังสามารถกรองโดยกระทู้ได้

  • ใช้ CtrlF / F เพื่อกระโดดไปยังการเกิดขึ้นของงานที่ใช้เวลามากที่สุดในการส่งออกตัวอย่างเช่น computeLightingPerform ทำงานในทุกกรอบหากคุณค้นหาในกองขยะที่มี 128 เฟรมคุณสามารถกระโดดไปที่เฟรมที่ใช้เวลานานที่สุดในการเสร็จสมบูรณ์

  • ใช้เมนู เอกซ์เรย์ เพื่อเปิดใช้งานหรือปิดการใช้งานการจัดระเบียบสีสำหรับการจัดสรรหน่วยความจำ

    The MicroProfiler web view with x-ray enabled.
    • กรอบไฟเบาภายในกราฟแถบหลักบ่งบอกถึงการจัดสรรหน่วยความจําที่สูงขึ้น
    • ส่วนที่เบากว่าของแถบตัวอย่างและฉลากเบากว่าบนเส้นเวลาบ่งบอกถึงส่วนของกรอบที่มีการจัดสรรหน่วยความจำสูงกว่า
    • ในโหมดรังสีเอกซ์ กด C เพื่อแสดงขนาดทั้งหมดของการจัดสรรหน่วยความจำแทนจำนวนการจัดสรร
  • ใช้เมนูส่งออก ส่งออก เพื่อส่งออกกราฟภาพความร้อนของ CPU หรือหน่วยความจําที่เกี่ยวข้องกับการโทรทั้งหมดที่รวมอยู่ในการดัมพ์ รักษาลําดับชั้นพ่อ-ลูกและขนาดของพวกเขาตามระยะเวลากราฟเปลวไฟมีประโยชน์เป็นพิเศษในการระบุภารกิจที่ไม่ใช้เวลานานเป็นพิเศษในการดำเนินการ (และดังนั้นจึงยากที่จะสังเกตเห็น) แต่ทำงานบ่อยเกินไปที่เวลาในการประมวลผลของพวกเขาจะกลายเป็นสิ่งสำคัญ

    The MicroProfiler flame graph in the web UI.

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

    The MicroProfiler flame graph in Studio.
  • ลากและวางไฟล์ขยะที่สองลงในอินเทอร์เฟซผู้ใช้เว็บเพื่อสร้างกราฟไฟล์ที่แตกต่างซึ่งสามารถช่วยให้คุณระบุการปรับปรุงหรือการย้อนกลับของประสิทธิภาพประสบการณ์ของคุณในเวลาที่ผ่านมาคลิก รวมและเปรียบเทียบ เพื่อส่งออกไฟล์ HTML ใหม่

    The MicroProfiler diff flame graph builder showing the left and right sides.

    กราฟไฟล์แตกต่างเน้นไปที่การทิ้งขยะ (ซ้ายหรือขวา) ที่ใช้หน่วยประมวลผลหรือหน่วยความจำมากขึ้น ด้วยสีสดใสที่บ่งบอกถึงความแตกต่างที่ใหญ่ขึ้น

    The MicroProfiler diff flame graph.