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 seconds2 4 + 3 + 2 = 9 func foo1(): bar() // CPU intensive work // for 1.5 seconds1,5 2,5 + 1,5 = 4 func foo2(): bar() // CPU intensive work // for 0.5 seconds0,5 2,5 + 0,5 = 3 func bar(): // CPU intensive work // for 2.5 seconds2,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
foo1undfoo2beibehalten wurden, obwohl der Aufrufstack, der mitfoo2beginnt, jetzt neben dem Frame fürfoo1angezeigt 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
foo2ein Drittel der Breite des Frames fürmain, da die CPU-Gesamtzeit vonfoo2ein Drittel der CPU-Gesamtzeit vonmainbeträ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
foo1leer und 2,5 Einheiten werden vonbarbelegt. Daher beträgt die eigene CPU-Zeit vonfoo137,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
barvonfoo1aufgerufen und die CPU-Gesamtzeit vonfoo1wird als die CPU-Gesamtzeit vonbarplus die eigene CPU-Zeit vonfoo1definiert. Daher kann die CPU-Gesamtzeit vonbarnicht höher als die CPU-Gesamtzeit vonfoo1sein.
Nächste Schritte
- Profile für die Analyse auswählen
- Mit dem Flame-Diagramm interagieren
- Flame-Diagramm filtern
- Flame-Diagramm hervorheben
- Profile vergleichen