Lua Academy · Lektion

Profilering med LuaProfiler

Instrumentera kod med LuaProfiler för att hitta CPU-flaskhalsar och räkna anrop.

Lektion 3 av 413 steg

Profilering med LuaProfiler är en gratis lektion i Lua Academy på CoddyKit. Detta är lektion 3 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Lua Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Lua Academy innehåller totalt 4 lektioner.

Vad är LuaProfiler?

LuaProfiler är en hook-baserad profilerare för Lua. Den registrerar antal funktionsanrop och den sammanlagda tiden som tillbringas i varje funktion och skapar en rapport för optimeringsanalys.

Installera LuaProfiler

Tillgänglig via LuaRocks: luarocks install luaprofiler. Eller inkludera källkoden direkt i ditt projekt.

Starta profileraren

Omslut koden med anrop för att starta och stoppa profileraren.

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

Läsa rapporten

Rapporten visar: funktionsnamn, antal anrop, tid per anrop och total tid. Fokusera på funktioner med hög total tid.

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

Profilera specifika kodvägar

Profilera endast en delmängd av koden för att minska overhead och fokusera rapporten.

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

Alternativ: Anpassad profilerare med debug.sethook

Bygg en minimal profilerare med debug.sethook för att samla in antal anrop utan ett externt bibliotek.

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 för tidtagning av funktioner

Tidsmät enskilda funktioner manuellt för snabba, målinriktade riktmärken.

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

jit.p för LuaJIT-profilering

I LuaJIT är jit.p bättre än hook-baserade profilerare för produktionsbruk: lägre overhead och JIT-medveten sampling.

Flamdiagram

Generera ett flamdiagram genom att samla in stackprover. Verktyg: lua-flameprof för PUC Lua, jit.p + FlameGraph för LuaJIT. Flamdiagram visar hela anropshierarkin för CPU-användningen.

Profilering i testsviter

Kör profileraren i enhetstester för att automatiskt upptäcka prestandaregressioner. Kontrollera att hotspot-funktioner inte överskrider en tidsgräns.

Vanliga hotspots

  • Strängkonkatenering med .. i loopar (använd table.concat).
  • table.sort på stora tabeller (överväg en snabbare algoritm).
  • Frekvent skapande av closures.
  • Djupa metatabellskedjor med __index.

Fråga om profilering

Vad visar en LuaProfiler-rapport?

Sammanfattning: Profilering med LuaProfiler

Använd LuaProfiler eller en anpassad debug.sethook-profilerare för att samla in antal anrop och tidsmätningar. Fokusera på funktioner med hög total tid. I LuaJIT bör du föredra jit.p. Använd flamdiagram för att visualisera anropshierarkin.

Gratis att börja

Lär dig Lua med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
40
Lektioner
159

Vanliga frågor

Är lektionen ”Profilering med LuaProfiler” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Lua Academy, inklusive ”Profilering med LuaProfiler”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Lua Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”Profilering med LuaProfiler”?

Instrumentera kod med LuaProfiler för att hitta CPU-flaskhalsar och räkna anrop. Ni övar på Lua Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Lua Academy?

Du behöver inga förkunskaper. Utbildningen i Lua Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.

Hur lång tid tar lektionen ”Profilering med LuaProfiler”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Lua Academy-lektionen?

Ja. Varje Lua Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Biblioteket debug på djupet
  2. Fjärrfelsökning med MobDebug
  3. Profilering med LuaProfiler
  4. Kodtäckning och testinstrumentering
← Tillbaka till Lua Academy