0Pricing
Lua Academy · Lektion

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 ms

Bestimmte 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)
end

Funktionszeiten 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

  1. Die debug-Bibliothek im Detail
  2. Remote-Debugging mit MobDebug
  3. Profiling mit LuaProfiler
  4. Codeabdeckung und Testinstrumentierung
← Zurück zu Lua Academy