EMZETT.
Login

Profiling und Flame Graphs

Kurz: Profiling misst, wo ein Programm seine Zeit oder seinen Speicher verbraucht. Ein Flame Graph stellt das Ergebnis als gestapelte Balken dar.

Genauer: Ein Profiler schaut in kurzen Abständen nach, welche Funktion gerade läuft (Sampling), und zählt. Funktionen, die oft auftauchen, sind die Hotspots. Erst messen, dann optimieren: Das Bauchgefühl liegt oft daneben.

Im Detail

  • Flame Graph lesen: Breite = Anteil an der Zeit, Höhe = Aufrufstapel. Breite Balken oben sind Kandidaten für Optimierung.
  • CPU vs. Wartezeit: Ein Programm kann auf Datenbank, Netzwerk oder Sperren warten. Das sieht ein reiner CPU-Profiler nicht.
  • Werkzeuge: perf (Linux), Chrome-Performance-Tab, py-spy, Java Flight Recorder, pprof (Go).
  • Speicherprofil: Zeigt, welche Stellen viel Speicher belegen oder Lecks verursachen.
  • Regel: Nur den größten Hotspot angehen und danach neu messen.

Siehe auch: Debugger und Core Dumps