Profiling mit jit.p und perf
Profilen Sie Lua-Code mit jit.p, markieren Sie Hotpaths und reduzieren Sie Allokationen
Profiling mit jit.p und perf ist eine kostenlose Lua Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Lua Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Lua Academy-Kurs umfasst insgesamt 4 Lektionen.
Warum profilieren?
Profiling zeigt, welche Funktionen die meiste CPU-Zeit verbrauchen. Ohne Profiling richten sich Optimierungsbemühungen häufig auf Code, der gar keinen Engpass darstellt.
jit.p: Integrierter LuaJIT-Profiler
LuaJIT enthält jit.p, einen Sampling-Profiler. Sie können ihn über die Kommandozeile oder innerhalb des Skripts aktivieren.
-- Command line:
luajit -jp=s script.lua
-- Or inside script:
require("jit.p").start("s") -- sample at function level
-- ... code ...
require("jit.p").stop()jit.p-Modi
Modi: "s" erfasst Samples nach Funktion, "l" nach Zeile, "i" zeigt Interpreter und JIT im Vergleich. Ausgabe in eine Datei: "-jp=s,output.txt".
jit.p-Ausgabe lesen
Die Ausgabe zeigt prozentual, wofür die Zeit aufgewendet wurde. Konzentrieren Sie sich auf die wichtigsten Hotspots.
-- Example output:
-- 40% mymodule.hotLoop
-- 25% table.sort
-- 15% string.format
-- ...jit.dump für Trace-Details
require("jit.dump").on() gibt für jeden kompilierten Trace detaillierte IR- und Maschinencode-Informationen aus. Verwenden Sie dies, um zu verstehen, was der JIT tatsächlich kompiliert hat.
Linux perf verwenden
Unter Linux erfasst perf record -g luajit script.lua Aufrufstapel auf Betriebssystemebene. Kombinieren Sie dies mit perf report für ein Flame-Graph.
LuaJIT- und perf-Map-Dateien
LuaJIT kann perf-Symbol-Map-Dateien erzeugen, sodass perf-Berichte Lua-Funktionsnamen anstelle von rohen Adressen anzeigen: luajit -jp=p script.lua.
os.clock für Microbenchmarks
Verwenden Sie für schnelle Benchmarks os.clock(), um die verstrichene Zeit zu messen. Wiederholen Sie den Vorgang viele Male, um Messrauschen auszugleichen.
local function bench(fn, iters)
local t0 = os.clock()
for _ = 1, iters do fn() end
return (os.clock() - t0) / iters
endHotspots isolieren
Extrahieren Sie die häufig ausgeführte Funktion nach dem Profiling in einen minimalen eigenständigen Benchmark. So können Sie Optimierungen einfach iterativ testen und Verbesserungen überprüfen.
Auswirkungen der GC auf das Profiling
GC-Pausen erscheinen im Profiling als Spitzen. Messen Sie bei deaktivierter GC (collectgarbage("stop")), um die Laufzeit des Algorithmus von der GC-Zeit zu trennen.
Bewährte Vorgehensweisen beim Profiling
- Profilieren Sie mit realistischen Daten, nicht mit Microbenchmarks.
- Profilieren Sie Release-Builds, nicht Debug-Builds.
- Messen Sie vor und nach jeder Änderung.
- Optimieren Sie keinen Code, der weniger als <5% der Gesamtzeit benötigt.
Profiling-Frage
Was misst der jit.p-Modus "s"?
Rückblick: Profiling mit jit.p und perf
Verwenden Sie jit.p für das Profiling von Funktionen und Zeilen auf Lua-Ebene, jit.dump zur Untersuchung von JIT-Traces und Linux-perf für Flame-Graphs auf Betriebssystemebene. Messen Sie, optimieren Sie und messen Sie erneut.
Häufig gestellte Fragen
Ist die Lektion „Profiling mit jit.p und perf“ kostenlos?
Ja — der vollständige Text von „Profiling mit jit.p und perf“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Lua Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Lua Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Profiling mit jit.p und perf“?
Profilen Sie Lua-Code mit jit.p, markieren Sie Hotpaths und reduzieren Sie Allokationen Du übst Lua Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Lua Academy zu starten?
Keine Vorkenntnisse erforderlich. Lua Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.
Wie lange dauert die Lektion „Profiling mit jit.p und perf“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Lua Academy-Lektion Code schreiben und ausführen?
Ja. Jede Lua Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Überblick über die LuaJIT-Architektur
- JIT-freundliches Lua schreiben
- Profiling mit jit.p und perf
- Muster für Benchmarking