Lua Academy · Lektion

Profilering med jit.p og perf

Profilér Lua-kode med jit.p, annotér hot paths, og reducér antallet af allokeringer.

Lektion 3 af 413 trin

Profilering med jit.p og perf er en gratis Lua Academy-lektion på CoddyKit. Dette er lektion 3 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Lua Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Lua Academy-kurset indeholder 4 lektioner i alt.

Hvorfor profilere

Profilering identificerer, hvilke funktioner der bruger mest CPU-tid. Uden profilering bliver optimeringsindsatsen ofte rettet mod kode, der ikke er flaskehalsen.

jit.p: Indbygget profiler i LuaJIT

LuaJIT indeholder jit.p, en sampler-baseret profiler. Aktivér den fra kommandolinjen eller inde i scriptet.

-- Command line:
luajit -jp=s script.lua
-- Or inside script:
require("jit.p").start("s")  -- sample at function level
-- ... code ...
require("jit.p").stop()

Tilstande i jit.p

Tilstande: "s" sampler efter funktion, "l" sampler efter linje, "i" viser fortolker kontra JIT. Skriv output til en fil med: "-jp=s,output.txt".

Sådan læses output fra jit.p

Outputtet viser en procentvis opdeling af, hvor tiden blev brugt. Fokuser på de øverste hotspots.

-- Example output:
-- 40%  mymodule.hotLoop
-- 25%  table.sort
-- 15%  string.format
-- ...

jit.dump til detaljer om spor

require("jit.dump").on() skriver detaljeret IR og maskinkode for hvert kompileret spor. Brug det til at forstå, hvad JIT faktisk kompilerede.

Brug af Linux perf

På Linux indsamler perf record -g luajit script.lua kaldestakke på operativsystemniveau. Kombinér det med perf report for at få en flammegraf.

LuaJIT + perf-kortfiler

LuaJIT kan generere perf-symbolkortfiler, så perf-rapporter viser Lua-funktionsnavne i stedet for rå adresser: luajit -jp=p script.lua.

os.clock til mikrobenchmarks

Til hurtige benchmarks måler du væguret med os.clock(). Gentag operationen mange gange for at udjævne måleusikkerheden.

local function bench(fn, iters)
  local t0 = os.clock()
  for _ = 1, iters do fn() end
  return (os.clock() - t0) / iters
end

Isolér hotspots

Efter profileringen udtrækker du den varme funktion til et minimalt, selvstændigt benchmark. Det gør det nemt at afprøve optimeringer trinvis og kontrollere forbedringer.

GC's indvirkning på profilering

GC-pauser vises som spidser i profileringen. Mål med GC deaktiveret (collectgarbage("stop")) for at adskille algoritmetid fra GC-tid.

Bedste praksis for profilering

  • Profilér med realistiske data, ikke mikrobenchmarks.
  • Profilér release-builds, ikke debug-builds.
  • Mål før og efter hver ændring.
  • Optimér ikke kode, der bruger <5 % af den samlede tid.

Spørgsmål om profilering

Hvad måler jit.p-tilstanden "s"?

Opsummering: Profilering med jit.p og perf

Brug jit.p til profilering af funktioner og linjer på Lua-niveau, jit.dump til inspektion af JIT-spor og Linux perf til flammegrafer på operativsystemniveau. Mål, optimér, og mål igen.

Gratis at komme i gang

Lær Lua med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
40
Lektioner
159

Ofte stillede spørgsmål

Er lektionen “Profilering med jit.p og perf” gratis?

Ja — alle 3 lektioner i læringssporet Lua Academy, inklusive “Profilering med jit.p og perf”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Lua Academy-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Profilering med jit.p og perf”?

Profilér Lua-kode med jit.p, annotér hot paths, og reducér antallet af allokeringer. Du øver dig i Lua Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Lua Academy?

Der kræves ingen tidligere erfaring. Lua Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 3 af 4.

Hvor lang tid tager lektionen “Profilering med jit.p og perf”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Lua Academy-lektion?

Ja. Alle Lua Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Oversigt over LuaJIT-arkitekturen
  2. Skriv JIT-venlig Lua
  3. Profilering med jit.p og perf
  4. Mønstre for benchmarking
← Tilbage til Lua Academy