Lua Academy · leksjon

Profilering med jit.p og perf

Profiler Lua-kode med jit.p, marker varme kodebaner og reduser allokeringer.

Leksjon 3 av 413 trinn

Profilering med jit.p og perf er en gratis leksjon i Lua Academy på CoddyKit. Dette er leksjon 3 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Lua Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Lua Academy inneholder totalt 4 leksjoner.

Hvorfor profilere?

Profilering identifiserer hvilke funksjoner som bruker mest CPU-tid. Uten profilering blir optimaliseringsarbeidet ofte rettet mot kode som ikke er flaskehalsen.

jit.p: Innebygd profiler i LuaJIT

LuaJIT inkluderer jit.p, en sampling-basert profiler. Aktiver den fra kommandolinjen eller inne i skriptet.

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

Moduser for jit.p

Moduser: "s" sampler per funksjon, "l" sampler per linje, "i" viser tolk kontra JIT. Skriv ut til fil med: "-jp=s,output.txt".

Lese utdata fra jit.p

Utdataene viser en prosentvis fordeling av hvor tiden ble brukt. Fokuser på de viktigste flaskehalsene.

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

jit.dump for sporingsdetaljer

require("jit.dump").on() skriver ut detaljert IR- og maskinkode for hvert kompilerte spor. Bruk dette for å forstå hva JIT faktisk kompilerte.

Bruke Linux perf

På Linux fanger perf record -g luajit script.lua opp kallstakker på operativsystemnivå. Kombiner med perf report for et flammediagram.

LuaJIT + perf-tilordningsfiler

LuaJIT kan generere perf-symboltilordningsfiler slik at perf-rapporter viser Lua-funksjonsnavn i stedet for rå adresser: luajit -jp=p script.lua.

os.clock for mikrobenchmarker

For raske benchmarker måler du veggklokketid med os.clock(). Gjenta operasjonen mange ganger for å jevne ut målingsstøy.

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

Isoler flaskehalser

Etter profileringen trekker du ut den mest belastede funksjonen til en minimal, frittstående benchmark. Da blir det enkelt å prøve ut optimaliseringer og kontrollere forbedringer.

GCs påvirkning på profilering

GC-pauser vises som topper i profileringen. Mål med GC deaktivert (collectgarbage("stop")) for å skille algoritmetid fra GC-tid.

Beste praksis for profilering

  • Profiler med realistiske data, ikke mikrobenchmarker.
  • Profiler release-bygg, ikke debug-bygg.
  • Mål før og etter hver endring.
  • Ikke optimaliser kode som bruker <5 % av den totale tiden.

Spørsmål om profilering

Hva måler jit.p-modusen "s"?

Oppsummering: Profilering med jit.p og perf

Bruk jit.p til profilering av funksjoner og linjer på Lua-nivå, jit.dump til inspeksjon av JIT-spor og Linux perf til flammediagrammer på operativsystemnivå. Mål, optimaliser og mål på nytt.

Gratis å komme i gang

Lær deg Lua med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
40
Leksjoner
159

Ofte stilte spørsmål

Er leksjonen «Profilering med jit.p og perf» gratis?

Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Lua Academy, inkludert «Profilering med jit.p og perf», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Lua Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «Profilering med jit.p og perf»?

Profiler Lua-kode med jit.p, marker varme kodebaner og reduser allokeringer. Du øver på Lua Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Lua Academy?

Ingen tidligere erfaring er nødvendig. Lua Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.

Hvor lang tid tar leksjonen «Profilering med jit.p og perf»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Lua Academy-leksjonen?

Ja. Alle Lua Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Oversikt over LuaJIT-arkitekturen
  2. Skrive JIT-vennlig Lua
  3. Profilering med jit.p og perf
  4. Mønstre for ytelsesmåling
← Tilbake til Lua Academy