Profiling mit LuaProfiler
Instrumentieren Sie Code mit LuaProfiler, um CPU-Hotspots und Aufrufzahlen zu ermitteln
Profiling mit LuaProfiler 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.
Was ist LuaProfiler?
LuaProfiler ist ein Hook-basierter Profiler für Lua. Er erfasst die Anzahl der Funktionsaufrufe und die kumulierte Ausführungszeit jeder Funktion und erstellt einen Bericht zur Analyse von Optimierungsmöglichkeiten.
LuaProfiler installieren
Verfügbar über LuaRocks: luarocks install luaprofiler. Oder binden Sie den Quellcode direkt in Ihr Projekt ein.
Profiler starten
Umschließen Sie Ihren Code mit Aufrufen zum Starten und Beenden des Profilers.
local profiler = require("profiler")
profiler.start("profile.txt") -- output to file
-- ... your code ...
profiler.stop()Den Bericht lesen
Der Bericht zeigt: Funktionsname, Aufrufanzahl, Zeit pro Aufruf und Gesamtzeit. Konzentrieren Sie sich auf Funktionen mit hoher Gesamtzeit.
-- Example report:
-- function calls total_time avg_time
-- hotLoop 1000 0.850 s 0.850 ms
-- table.sort 200 0.120 s 0.600 ms
-- string.format 5000 0.090 s 0.018 msBestimmte Codepfade profilieren
Profilieren Sie nur einen Teil Ihres Codes, um den Overhead zu verringern und den Bericht auf das Wesentliche zu konzentrieren.
profiler.start()
doExpensiveOperation()
profiler.stop()
profiler.report("expensive_op.txt")Alternative: Benutzerdefinierter Profiler mit debug.sethook
Erstellen Sie mit debug.sethook einen minimalen Profiler, der Aufrufanzahlen ohne eine externe Bibliothek erfasst.
local counts = {}
debug.sethook(function(event)
if event == "call" then
local info = debug.getinfo(2, "n")
local name = info.name or "?"
counts[name] = (counts[name] or 0) + 1
end
end, "c")
-- ... run code ...
debug.sethook()
for name, count in pairs(counts) do
print(count, name)
endFunktionszeiten mit os.clock messen
Messen Sie einzelne Funktionen manuell, um schnell gezielte Benchmarks durchzuführen.
local function time(fn, ...)
local t = os.clock()
fn(...)
return os.clock() - t
end
print("myFunc took:", time(myFunc, arg1, arg2))jit.p für LuaJIT-Profiling
Bei LuaJIT ist jit.p für den Produktiveinsatz besser geeignet als Hook-basierte Profiler: Es verursacht weniger Overhead und berücksichtigt den JIT-Compiler.
Flamegraphs
Erstellen Sie ein Flamegraph, indem Sie Stack-Samples erfassen. Werkzeuge: lua-flameprof für PUC Lua, jit.p + FlameGraph für LuaJIT. Flamegraphs zeigen die gesamte Aufrufhierarchie der CPU-Auslastung.
Profiling in Testsuiten
Führen Sie den Profiler innerhalb von Unit-Tests aus, um Leistungseinbußen automatisch zu erkennen. Stellen Sie sicher, dass Hotspot-Funktionen einen Zeitgrenzwert nicht überschreiten.
Häufige Hotspots
- Zeichenkettenverkettung mit
..in Schleifen (verwenden Sie table.concat). - table.sort für große Tabellen (ziehen Sie einen schnelleren Algorithmus in Betracht).
- Häufige Erstellung von Closures.
- Tiefe __index-Ketten von Metatabellen.
Frage zum Profiling
Was zeigt ein LuaProfiler-Bericht?
Zusammenfassung: Profiling mit LuaProfiler
Verwenden Sie LuaProfiler oder einen benutzerdefinierten debug.sethook-Profiler, um Aufrufanzahlen und Zeitmessungen zu erfassen. Konzentrieren Sie sich auf Funktionen mit hoher Gesamtzeit. Bevorzugen Sie bei LuaJIT jit.p. Verwenden Sie Flamegraphs zur Visualisierung der Aufrufhierarchie.
Häufig gestellte Fragen
Ist die Lektion „Profiling mit LuaProfiler“ kostenlos?
Ja — der vollständige Text von „Profiling mit LuaProfiler“ 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 LuaProfiler“?
Instrumentieren Sie Code mit LuaProfiler, um CPU-Hotspots und Aufrufzahlen zu ermitteln 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 LuaProfiler“?
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
- Die debug-Bibliothek im Detail
- Remote-Debugging mit MobDebug
- Profiling mit LuaProfiler
- Codeabdeckung und Testinstrumentierung