0Pricing
Lua Academy · บทเรียน

การสร้างโพรไฟล์ด้วย LuaProfiler

ตรวจวัดโค้ดด้วย LuaProfiler เพื่อค้นหาจุดที่ใช้ CPU สูงและนับจำนวนการเรียก

การสร้างโพรไฟล์ด้วย LuaProfiler เป็นบทเรียน Lua Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Lua Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Lua Academy มีบทเรียนทั้งหมด 4 บทเรียน

LuaProfiler คืออะไร

LuaProfiler คือตัววิเคราะห์ประสิทธิภาพสำหรับ Lua ที่ทำงานโดยใช้ฮุก โดยบันทึกจำนวนครั้งที่เรียกใช้ฟังก์ชันและเวลาสะสมที่ใช้ในแต่ละฟังก์ชัน แล้วสร้าง report สำหรับวิเคราะห์การปรับประสิทธิภาพ

การติดตั้ง LuaProfiler

ติดตั้งได้ผ่าน LuaRocks ด้วยคำสั่ง luarocks install luaprofiler หรือรวมซอร์สโค้ดไว้โดยตรงในโปรเจกต์ของคุณ

การเริ่มตัววิเคราะห์ประสิทธิภาพ

ห่อหุ้มโค้ดของคุณด้วยการเรียก start/stop ของตัววิเคราะห์ประสิทธิภาพ

local profiler = require("profiler")
profiler.start("profile.txt")  -- output to file
-- ... your code ...
profiler.stop()

การอ่าน report

report จะแสดงชื่อฟังก์ชัน จำนวนครั้งที่เรียกใช้ เวลาเฉลี่ยต่อการเรียกใช้ และเวลารวม ให้มุ่งความสนใจไปที่ฟังก์ชันซึ่งมีเวลารวมสูง

-- Example report:
-- function          calls  total_time  avg_time
-- hotLoop          1000   0.850 s     0.850 ms
-- table.sort        200   0.120 s     0.600 ms
-- string.format    5000   0.090 s     0.018 ms

การวิเคราะห์เส้นทางโค้ดเฉพาะ

วิเคราะห์ประสิทธิภาพเฉพาะบางส่วนของโค้ด เพื่อลดค่าใช้จ่ายในการทำงานและมุ่งความสนใจไปที่ report

profiler.start()
doExpensiveOperation()
profiler.stop()
profiler.report("expensive_op.txt")

ทางเลือก: ตัววิเคราะห์ประสิทธิภาพแบบกำหนดเองด้วย debug.sethook

สร้างตัววิเคราะห์ประสิทธิภาพขนาดเล็กโดยใช้ debug.sethook เพื่อรวบรวมจำนวนครั้งที่เรียกใช้ฟังก์ชันโดยไม่ต้องใช้ไลบรารีภายนอก

local counts = {}
debug.sethook(function(event)
  if event == "call" then
    local info = debug.getinfo(2, "n")
    local name = info.name or "?"
    counts[name] = (counts[name] or 0) + 1
  end
end, "c")
-- ... run code ...
debug.sethook()
for name, count in pairs(counts) do
  print(count, name)
end

os.clock สำหรับจับเวลาฟังก์ชัน

จับเวลาฟังก์ชันแต่ละตัวด้วยตนเอง เพื่อวัดประสิทธิภาพแบบเจาะจงอย่างรวดเร็ว

local function time(fn, ...)
  local t = os.clock()
  fn(...)
  return os.clock() - t
end
print("myFunc took:", time(myFunc, arg1, arg2))

jit.p สำหรับการวิเคราะห์ LuaJIT

บน LuaJIT, jit.p เหมาะสำหรับใช้ในระบบจริงมากกว่าตัววิเคราะห์ประสิทธิภาพที่ใช้ฮุก เพราะมีค่าใช้จ่ายต่ำกว่าและการสุ่มตัวอย่างสอดคล้องกับ JIT

กราฟเปลวไฟ

สร้างกราฟเปลวไฟโดยรวบรวมตัวอย่างสแตก เครื่องมือที่ใช้ได้ ได้แก่ lua-flameprof สำหรับ PUC Lua และ jit.p + FlameGraph สำหรับ LuaJIT กราฟเปลวไฟจะแสดงลำดับชั้นการเรียกใช้ CPU ทั้งหมด

การวิเคราะห์ประสิทธิภาพในชุดการทดสอบ

เรียกใช้ตัววิเคราะห์ประสิทธิภาพภายในการทดสอบหน่วย เพื่อจับการถดถอยด้านประสิทธิภาพโดยอัตโนมัติ ยืนยันว่าฟังก์ชันจุดร้อนไม่ใช้เวลาเกินขีดจำกัดที่กำหนด

จุดร้อนที่พบบ่อย

  • การต่อสตริงด้วย .. ในลูป (ใช้ table.concat)
  • การใช้ table.sort กับตารางขนาดใหญ่ (พิจารณาอัลกอริทึมที่เร็วกว่า)
  • การสร้างคลอเชอร์บ่อยครั้ง
  • สายโซ่ __index ของเมทาเทเบิลที่ซ้อนลึก

คำถามเกี่ยวกับการวิเคราะห์ประสิทธิภาพ

รายงานของ LuaProfiler แสดงอะไร

สรุป: การวิเคราะห์ประสิทธิภาพด้วย LuaProfiler

ใช้ LuaProfiler หรือตัววิเคราะห์ประสิทธิภาพแบบกำหนดเองที่ใช้ debug.sethook เพื่อรวบรวมจำนวนครั้งที่เรียกใช้ฟังก์ชันและเวลา ให้มุ่งความสนใจไปที่ฟังก์ชันซึ่งมีเวลารวมสูง บน LuaJIT ให้เลือกใช้ jit.p และใช้กราฟเปลวไฟเพื่อแสดงลำดับชั้นการเรียกใช้

คำถามที่พบบ่อย

บทเรียน “การสร้างโพรไฟล์ด้วย LuaProfiler” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การสร้างโพรไฟล์ด้วย LuaProfiler” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Lua Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Lua Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การสร้างโพรไฟล์ด้วย LuaProfiler”

ตรวจวัดโค้ดด้วย LuaProfiler เพื่อค้นหาจุดที่ใช้ CPU สูงและนับจำนวนการเรียก คุณปฏิบัติ Lua Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Lua Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Lua Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “การสร้างโพรไฟล์ด้วย LuaProfiler” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Lua Academy นี้ได้ไหม

ได้ บทเรียน Lua Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. ไลบรารี debug เชิงลึก
  2. การดีบักระยะไกลด้วย MobDebug
  3. การสร้างโพรไฟล์ด้วย LuaProfiler
  4. ความครอบคลุมโค้ดและการตรวจวัดการทดสอบ
← กลับไปที่ Lua Academy