Profilazione con jit.p e perf
Esegua il profiling del codice Lua con jit.p, annoti gli hot path e riduca le allocazioni.
Profilazione con jit.p e perf è una lezione Lua Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Lua Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Lua Academy include 4 lezioni in totale.
Perché eseguire il profiling
Il profiling identifica le funzioni che consumano più tempo di CPU. Senza profiling, gli sforzi di ottimizzazione spesso si concentrano erroneamente su codice che non costituisce il collo di bottiglia.
jit.p: profiler integrato di LuaJIT
LuaJIT include jit.p, un profiler a campionamento. Lo abiliti dalla riga di comando o all'interno dello script.
-- Command line:
luajit -jp=s script.lua
-- Or inside script:
require("jit.p").start("s") -- sample at function level
-- ... code ...
require("jit.p").stop()Modalità di jit.p
Modalità: "s" campiona per funzione, "l" campiona per riga, "i" mostra interprete e JIT. Output su file: "-jp=s,output.txt".
Come leggere l'output di jit.p
L'output mostra una suddivisione percentuale del tempo impiegato. Si concentri sui primi hotspot.
-- Example output:
-- 40% mymodule.hotLoop
-- 25% table.sort
-- 15% string.format
-- ...jit.dump per i dettagli delle tracce
require("jit.dump").on() restituisce l'IR dettagliato e il codice macchina per ogni traccia compilata. Lo utilizzi per capire che cosa ha effettivamente compilato il JIT.
Utilizzo di Linux perf
Su Linux, perf record -g luajit script.lua acquisisce gli stack delle chiamate a livello di sistema operativo. Lo combini con perf report per ottenere un flame graph.
File di mappe di LuaJIT e perf
LuaJIT può generare file di mappe dei simboli per perf, in modo che i report di perf mostrino i nomi delle funzioni Lua invece degli indirizzi grezzi: luajit -jp=p script.lua.
os.clock per i micro-benchmark
Per benchmark rapidi, misuri il tempo reale trascorso con os.clock(). Ripeta l'operazione molte volte per ridurre l'effetto del rumore di misurazione.
local function bench(fn, iters)
local t0 = os.clock()
for _ = 1, iters do fn() end
return (os.clock() - t0) / iters
endIsolare gli hotspot
Dopo il profiling, estragga la funzione critica in un benchmark autonomo minimale. In questo modo sarà facile iterare sulle ottimizzazioni e verificare i miglioramenti.
Impatto del GC sul profiling
Le pause del GC compaiono nel profiling come picchi. Esegua le misurazioni con il GC disabilitato (collectgarbage("stop")) per separare il tempo dell'algoritmo da quello del GC.
Buone pratiche per il profiling
- Esegua il profiling con dati realistici, non con micro-benchmark.
- Esegua il profiling delle build di release, non di quelle di debug.
- Misuri prima e dopo ogni modifica.
- Non ottimizzi il codice che occupa meno del 5% del tempo totale.
Domanda sul profiling
Che cosa misura la modalità "s" di jit.p?
Riepilogo: profiling con jit.p e perf
Utilizzi jit.p per il profiling di funzioni e righe a livello Lua, jit.dump per ispezionare le tracce JIT e Linux perf per i flame graph a livello di sistema operativo. Misuri, ottimizzi e misuri di nuovo.
Domande Frequenti
La lezione «Profilazione con jit.p e perf» è gratuita?
Sì — il testo completo di «Profilazione con jit.p e perf» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Lua Academy, passa a CoddyKit PRO. Il corso Lua Academy include 4 lezioni in totale.
Cosa imparerò in «Profilazione con jit.p e perf»?
Esegua il profiling del codice Lua con jit.p, annoti gli hot path e riduca le allocazioni. Eserciti Lua Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Lua Academy?
Non è richiesta alcuna esperienza precedente. Lua Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.
Quanto tempo richiede la lezione «Profilazione con jit.p e perf»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Lua Academy?
Sì. Ogni lezione Lua Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Panoramica dell'architettura LuaJIT
- Scrittura di codice Lua adatto al JIT
- Profilazione con jit.p e perf
- Pattern di benchmarking