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