Lua Academy · Pelajaran

Pemprofilan dengan LuaProfiler

Instrumentasikan kod dengan LuaProfiler untuk mencari titik panas CPU dan kiraan panggilan.

Pelajaran 3 daripada 413 langkah

Pemprofilan dengan LuaProfiler ialah pelajaran Lua Academy percuma di CoddyKit. Ini ialah pelajaran 3 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Lua Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Lua Academy merangkumi sejumlah 4 pelajaran.

Apakah LuaProfiler?

LuaProfiler ialah pemprofil Lua berasaskan cangkuk. Pustaka ini merekodkan bilangan panggilan fungsi dan jumlah masa yang dihabiskan dalam setiap fungsi, lalu menghasilkan laporan untuk analisis pengoptimuman.

Memasang LuaProfiler

Tersedia melalui LuaRocks: luarocks install luaprofiler. Atau sertakan sumbernya terus dalam projek anda.

Memulakan Pemprofil

Bungkus kod anda dengan panggilan start/stop pemprofil.

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

Membaca Laporan

Laporan menunjukkan: nama fungsi, bilangan panggilan, masa setiap panggilan dan jumlah masa. Tumpukan perhatian pada fungsi yang mempunyai jumlah masa yang tinggi.

-- 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

Memprofilkan Laluan Kod Tertentu

Profilkan hanya sebahagian daripada kod anda untuk mengurangkan lebihan pemprosesan dan memfokuskan laporan.

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

Alternatif: Pemprofil Tersuai dengan debug.sethook

Bina pemprofil minimum menggunakan debug.sethook untuk mengumpulkan bilangan panggilan tanpa pustaka luaran.

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 untuk Pemasa Fungsi

Ukur masa setiap fungsi secara manual untuk penanda aras pantas dan khusus.

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

jit.p untuk Pemprofilan LuaJIT

Pada LuaJIT, jit.p lebih baik daripada pemprofil berasaskan cangkuk untuk penggunaan produksi: lebihan pemprosesan lebih rendah dan pensampelan yang menyedari JIT.

Graf Api

Jana graf api dengan mengumpulkan sampel tindanan. Alat: lua-flameprof untuk PUC Lua, jit.p + FlameGraph untuk LuaJIT. Graf api menunjukkan keseluruhan hierarki panggilan bagi penggunaan CPU.

Pemprofilan dalam Himpunan Ujian

Jalankan pemprofil di dalam ujian unit untuk mengesan kemerosotan prestasi secara automatik. Tegaskan bahawa fungsi titik panas tidak melebihi ambang masa.

Titik Panas Lazim

  • Penyambungan rentetan dengan .. dalam gelung (gunakan table.concat).
  • table.sort pada jadual besar (pertimbangkan algoritma yang lebih pantas).
  • Penciptaan penutupan yang kerap.
  • Rantaian __index metatabel yang mendalam.

Soalan Pemprofilan

Apakah yang ditunjukkan oleh laporan LuaProfiler?

Ringkasan: Pemprofilan dengan LuaProfiler

Gunakan LuaProfiler atau pemprofil debug.sethook tersuai untuk mengumpulkan bilangan panggilan dan pemasaan. Tumpukan perhatian pada fungsi dengan jumlah masa yang tinggi. Pada LuaJIT, utamakan jit.p. Gunakan graf api untuk visualisasi hierarki panggilan.

Percuma untuk bermula

Pelajari Lua dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
40
Pelajaran
159

Soalan Lazim

Adakah pelajaran “Pemprofilan dengan LuaProfiler” percuma?

Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Lua Academy, termasuk “Pemprofilan dengan LuaProfiler”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Lua Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Pemprofilan dengan LuaProfiler”?

Instrumentasikan kod dengan LuaProfiler untuk mencari titik panas CPU dan kiraan panggilan. Anda berlatih Lua Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Lua Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Lua Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 4.

Berapa lamakah pelajaran “Pemprofilan dengan LuaProfiler” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Lua Academy ini?

Ya. Setiap pelajaran Lua Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Pustaka debug secara Mendalam
  2. Penyahpepijatan Jauh dengan MobDebug
  3. Pemprofilan dengan LuaProfiler
  4. Liputan Kod dan Instrumentasi Ujian
← Kembali ke Lua Academy