Grafici a fiamme

Cloud Profiler visualizza i dati di profilazione utilizzando Grafici a fiamma. A differenza di alberi e grafici, i grafici a fiamma utilizzano in modo efficiente lo spazio sullo schermo rappresentando una grande quantità di informazioni in un formato compatto e leggibile.

Per introdurre i grafici a fiamma, questa pagina illustra come convertire un albero in un grafico a fiamme e riassumere le caratteristiche principali dei grafici a fiamma.

Creazione di un grafico a fiamme

Per creare un grafico a fiamme da un albero, completa i passaggi illustrati nel diagramma seguente:

È in corso la creazione di un grafico a fiamme.

  1. Rimuovi dall'albero le frecce che indicano le chiamate di funzione.

  2. Sostituisci ogni nodo ad albero con un frame.

    Le cornici hanno una forma rettangolare e tutte le cornici hanno la stessa altezza. Per l'esempio in questa pagina, il tempo di CPU totale utilizzato dalla funzione denominata nel frame ne determina la larghezza.

    Lo pseudocodice per ciascuna funzione è descritto di seguito tabella. Il lavoro che richiede un uso intensivo della CPU durante l'esecuzione di una funzione definisce il tempo di CPU autonomo:

    Pseudocodice della funzione tempo di CPU autonomo
    (secondi)
    tempo di CPU totale
    (secondi)
    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

  3. Il passaggio successivo consiste nel rimuovere lo spazio verticale tra i fotogrammi e allinea a sinistra i frame, conservando le sequenze di chiamata. Se vuoi, puoi definire una combinazione di colori e colorare le cornici in base alla definizione. Ad esempio, puoi colorare le cornici in base al pacchetto per tempo di CPU totale, per tempo di CPU autonomo o per una misura diversa.

    Dopo aver rimosso automaticamente gli spazi vuoti e le cornici colorate in eccesso Tempo di CPU, il grafico a fiamme ora appare come segue:

    Immagine dettagliata del grafico a fiamme.

    Tieni presente che le chiamate si sovrappongono per foo1 e foo2 sono state conservate, anche se lo stack di chiamate che inizia con foo2 viene adesso accanto al frame di foo1.

Riepilogo

Questo semplice esempio illustra quanto segue:

  • I grafici a fiamme sono una rappresentazione compatta di un albero e puoi ricrearli uno stack di chiamate tracciando i frame dall'alto verso il basso.
  • I frame chiamano una funzione e la larghezza del frame è la misura relativa del tempo di CPU totale della funzione. In questo esempio, perché il tempo di CPU totale di foo2 è un terzo del tempo tempo di CPU totale di main, il frame di foo2 è un terzo della larghezza del frame per main.
  • La larghezza dello spazio vuoto sotto un frame è la misura relativa di il tempo di CPU autonomo per la funzione denominata nel frame. Ad esempio, sotto il frame foo1, 1,5 unità sono vuote e 2,5 unità sono occupati da bar. Di conseguenza, il tempo di CPU autonomo di foo1 è il 37,5% del tempo di CPU totale, ovvero 1,5 s.
  • Man mano che segui uno stack di chiamate, la larghezza dei frame diminuisce poiché Il tempo di CPU totale di un chiamante non può mai essere superiore al tempo di CPU totale del chiamante. È questo il comportamento che determina la forma della fiamma.

    Nell'esempio, foo1 chiama bar e il tempo di CPU totale di foo1 è definito come il tempo di CPU totale di bar più il tempo di CPU autonomo di foo1. Pertanto, il tempo di CPU totale di bar non può essere superiore al tempo di CPU totale di foo1.

Passaggi successivi