Flame-Diagramme
Cloud Profiler zeigt Profildaten in Form von Flame-Diagrammen an. Im Gegensatz zu Baumdiagrammen und Grafiken nutzen Flame-Diagramme den Bildschirmbereich effizient aus, da sie eine große Menge an Informationen in einem kompakten und lesbaren Format darstellen.
Zur Einführung in Flame-Diagramme wird auf dieser Seite veranschaulicht, wie ein Baumdiagramm in ein Flame-Diagramm umgewandelt wird. Außerdem werden die wichtigsten Merkmale von Flame-Diagrammen zusammengefasst.
Flame-Diagramm erstellen
Führen Sie die im folgenden Diagramm dargestellten Schritte aus, um ein Baumdiagramm in ein Flame-Diagramm umzuwandeln:
Entfernen Sie die Pfeile, die auf Funktionsaufrufe hinweisen, aus dem Baumdiagramm.
Ersetzen Sie jeden Baumknoten durch einen Frame.
Frames haben eine rechteckige Form und immer die gleiche Höhe. Für das Beispiel auf dieser Seite wird die Frame-Breite durch die CPU-Gesamtzeit bestimmt, die von der im Frame genannten Funktion verwendet wird.
Der Pseudocode für die einzelnen Funktionen wird in der folgenden Tabelle beschrieben. Die eigene CPU-Zeit wird durch die CPU-intensive Arbeit definiert, die während dem Ausführen einer Funktion aufgewendet wird:
Pseudocode der Funktion Eigene CPU-Zeit ("self")
(Sekunden)CPU-Gesamtzeit ("total")
(Sekunden)func main(): foo1() foo2() // CPU intensive work // for 2 seconds
2 4 + 3 + 2 = 9 func foo1(): bar() // CPU intensive work // for 1.5 seconds
1,5 2,5 + 1,5 = 4 func foo2(): bar() // CPU intensive work // for 0.5 seconds
0,5 2,5 + 0,5 = 3 func bar(): // CPU intensive work // for 2.5 seconds
2,5 2,5 Der nächste Schritt besteht darin, den vertikalen Abstand zwischen den Frames zu entfernen und die Frames linksbündig auszurichten, ohne die Aufrufsequenzen zu verändern. Optional können Sie ein Farbschema definieren und die Frames entsprechend der Definition farblich darstellen. Sie können Frames beispielsweise nach Paket, CPU-Gesamtzeit, eigene CPU-Zeit oder nach einem anderen Messwert farblich hervorheben.
Nachdem die überschüssigen Leerräume entfernt und die Frames farblich nach der eigenen CPU-Zeit hervorgehoben wurden, sieht das Flame-Diagramm nun so aus:
Beachten Sie, dass die Aufrufstacks für
foo1
undfoo2
beibehalten wurden, obwohl der Aufrufstack, der mitfoo2
beginnt, jetzt neben dem Frame fürfoo1
angezeigt wird.
Fazit
Mit diesem einfachen Beispiel wird Folgendes veranschaulicht:
- Flame-Diagramme sind eine kompakte Darstellung eines Baumdiagramms. Aufrufstacks können neu erstellt werden. Hierzu folgen Sie den Frames von oben nach unten.
- Frames benennen eine Funktion; die Frame-Breite ist das relative Maß für die CPU-Gesamtzeit dieser Funktion.
In diesem Beispiel hat der Frame für
foo2
ein Drittel der Breite des Frames fürmain
, da die CPU-Gesamtzeit vonfoo2
ein Drittel der CPU-Gesamtzeit vonmain
beträgt. - Die Breite des leeren Bereichs unter einem Frame ist das relative Maß für die eigene CPU-Zeit der im Frame genannten Funktion.
Beispielsweise sind 1,5 Einheiten unter dem Frame
foo1
leer und 2,5 Einheiten werden vonbar
belegt. Daher beträgt die eigene CPU-Zeit vonfoo1
37,5 % der CPU-Gesamtzeit bzw. 1,5 s. Wenn Sie einem Aufrufstack folgen, nimmt die Breite der Frames ab, da die CPU-Gesamtzeit eines Aufgerufenen niemals mehr als die CPU-Gesamtzeit des Aufrufers betragen kann. Dieses Verhalten verursacht die Flammenform.
Im Beispiel wird
bar
vonfoo1
aufgerufen und die CPU-Gesamtzeit vonfoo1
wird als die CPU-Gesamtzeit vonbar
plus die eigene CPU-Zeit vonfoo1
definiert. Daher kann die CPU-Gesamtzeit vonbar
nicht höher als die CPU-Gesamtzeit vonfoo1
sein.
Nächste Schritte
- Profile für die Analyse auswählen
- Mit dem Flame-Diagramm interagieren
- Flame-Diagramm filtern
- Flame-Diagramm hervorheben
- Profile vergleichen