การสร้างโพรไฟล์ด้วย jit.p และ perf
สร้างโพรไฟล์โค้ด Lua ด้วย jit.p ทำเครื่องหมายเส้นทางที่ทำงานหนัก และลดการจองหน่วยความจำ
การสร้างโพรไฟล์ด้วย jit.p และ perf เป็นบทเรียน Lua Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Lua Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Lua Academy มีบทเรียนทั้งหมด 4 บทเรียน
เหตุใดจึงต้องวิเคราะห์ประสิทธิภาพ
การวิเคราะห์ประสิทธิภาพช่วยระบุว่าฟังก์ชันใดใช้เวลา CPU มากที่สุด หากไม่วิเคราะห์ก่อน ความพยายามปรับประสิทธิภาพมักมุ่งไปยังโค้ดที่ไม่ใช่คอขวด
โปรไฟเลอร์ในตัวของ LuaJIT: jit.p
LuaJIT มี jit.p ซึ่งเป็นโปรไฟเลอร์แบบสุ่มตัวอย่าง คุณสามารถเปิดใช้งานจากบรรทัดคำสั่งหรือภายในสคริปต์ได้
-- Command line:
luajit -jp=s script.lua
-- Or inside script:
require("jit.p").start("s") -- sample at function level
-- ... code ...
require("jit.p").stop()โหมดของ jit.p
โหมดต่าง ๆ: "s" สุ่มตัวอย่างตามฟังก์ชัน, "l" สุ่มตัวอย่างตามบรรทัด, "i" แสดงการทำงานของตัวแปลคำสั่งเทียบกับ JIT ส่งผลลัพธ์ไปยังไฟล์ด้วย: "-jp=s,output.txt"
การอ่านผลลัพธ์ของ jit.p
ผลลัพธ์จะแสดงสัดส่วนเป็นเปอร์เซ็นต์ว่ามีการใช้เวลาไปกับส่วนใดบ้าง ให้มุ่งเน้นที่ส่วนที่ใช้เวลามากที่สุดสองสามอันดับแรก
-- Example output:
-- 40% mymodule.hotLoop
-- 25% table.sort
-- 15% string.format
-- ...jit.dump สำหรับรายละเอียดของเทรซ
require("jit.dump").on() จะแสดง IR และโค้ดเครื่องโดยละเอียดของเทรซที่คอมไพล์แต่ละรายการ ใช้เพื่อทำความเข้าใจว่า JIT คอมไพล์อะไรจริง
การใช้ perf บน Linux
บน Linux perf record -g luajit script.lua จะบันทึกสแตกการเรียกใช้ในระดับ OS ใช้ร่วมกับ perf report เพื่อสร้างกราฟเปลวไฟ
ไฟล์แผนที่ของ LuaJIT + perf
LuaJIT สามารถสร้างไฟล์แผนที่สัญลักษณ์ของ perf เพื่อให้รายงานของ perf แสดงชื่อฟังก์ชัน Lua แทนที่อยู่ดิบได้: luajit -jp=p script.lua
os.clock สำหรับการวัดประสิทธิภาพขนาดเล็ก
สำหรับการวัดประสิทธิภาพอย่างรวดเร็ว ให้ใช้ os.clock() วัดเวลาที่ผ่านไปจริง ทำการดำเนินการซ้ำหลายครั้งเพื่อเฉลี่ยความคลาดเคลื่อนจากการวัด
local function bench(fn, iters)
local t0 = os.clock()
for _ = 1, iters do fn() end
return (os.clock() - t0) / iters
endแยกส่วนที่เป็นคอขวด
หลังจากทำโปรไฟล์แล้ว ให้แยกฟังก์ชันที่ใช้เวลามากออกมาเป็นการวัดประสิทธิภาพแบบทำงานเดี่ยวที่มีโค้ดน้อยที่สุด วิธีนี้ทำให้ทดลองปรับปรุงประสิทธิภาพและตรวจสอบการพัฒนาได้ง่าย
ผลกระทบของ GC ต่อการทำโปรไฟล์
การหยุดชั่วคราวของ GC จะปรากฏเป็นจุดพุ่งสูงในการทำโปรไฟล์ ให้ทำการวัดโดยปิดใช้งาน GC (collectgarbage("stop")) เพื่อแยกเวลาของอัลกอริทึมออกจากเวลา GC
แนวทางปฏิบัติที่ดีในการทำโปรไฟล์
- ทำโปรไฟล์ด้วยข้อมูลที่สมจริง ไม่ใช่การวัดประสิทธิภาพขนาดเล็ก
- ทำโปรไฟล์รุ่นสำหรับใช้งานจริง ไม่ใช่รุ่นดีบัก
- วัดผลก่อนและหลังการเปลี่ยนแปลงทุกครั้ง
- อย่าปรับปรุงโค้ดที่ใช้เวลาน้อยกว่า 5% ของเวลารวม
คำถามเกี่ยวกับการทำโปรไฟล์
โหมด "s" ของ jit.p ใช้วัดอะไร
สรุป: การทำโปรไฟล์ด้วย jit.p และ perf
ใช้ jit.p สำหรับทำโปรไฟล์ฟังก์ชันหรือบรรทัดในระดับ Lua ใช้ jit.dump ตรวจสอบเทรซของ JIT และใช้ Linux perf สำหรับกราฟเปลวไฟในระดับ OS วัดผล ปรับปรุง แล้ววัดผลอีกครั้ง
คำถามที่พบบ่อย
บทเรียน “การสร้างโพรไฟล์ด้วย jit.p และ perf” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การสร้างโพรไฟล์ด้วย jit.p และ perf” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Lua Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Lua Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การสร้างโพรไฟล์ด้วย jit.p และ perf”
สร้างโพรไฟล์โค้ด Lua ด้วย jit.p ทำเครื่องหมายเส้นทางที่ทำงานหนัก และลดการจองหน่วยความจำ คุณปฏิบัติ Lua Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Lua Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Lua Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “การสร้างโพรไฟล์ด้วย jit.p และ perf” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Lua Academy นี้ได้ไหม
ได้ บทเรียน Lua Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- ภาพรวมสถาปัตยกรรม LuaJIT
- การเขียน Lua ที่เหมาะกับ JIT
- การสร้างโพรไฟล์ด้วย jit.p และ perf
- รูปแบบการวัดประสิทธิภาพ