Profilering med jit.p og perf
Profilér Lua-kode med jit.p, annotér hot paths, og reducér antallet af allokeringer.
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
endIsolé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.
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
- Oversigt over LuaJIT-arkitekturen
- Skriv JIT-venlig Lua
- Profilering med jit.p og perf
- Mønstre for benchmarking