La scheda Dall'alto verso il basso mostra un elenco di chiamate in cui l'espansione di un nodo di metodo o funzione mostra i relativi chiamati. La figura 2 mostra un grafico dall'alto verso il basso per il seguente grafico delle chiamate. Ogni freccia nel grafico punta da un chiamante a un destinatario della chiamata.
Figura 1. Un esempio di grafico delle chiamate che illustra il tempo totale per sé, per i figli e per il metodo D.
Come mostrato nella Figura 2, l'espansione del nodo per il metodo A nella scheda Dall'alto verso il basso mostra i relativi chiamati, i metodi B e D. Dopodiché, espandendo il nodo per il metodo D vengono visualizzati i relativi chiamanti, ad esempio i metodi B e C. Simile alla scheda Grafico a fiamma, l'albero dall'alto verso il basso aggrega le informazioni di traccia per i metodi identici che condividono lo stesso stack di chiamate. ovvero la scheda Grafico a fiamma fornisce una rappresentazione grafica della scheda Dall'alto verso il basso.
La scheda Dall'alto verso il basso fornisce le seguenti informazioni per descrivere il tempo della CPU trascorso per ogni chiamata (i tempi sono rappresentati anche come percentuale del tempo totale del thread nell'intervallo selezionato):
- Self:il tempo impiegato dalla chiamata di metodo o funzione per eseguire il proprio codice e non quello dei chiamati, come illustrato nella Figura 1 per il metodo D.
- Bambini:il tempo che la chiamata di metodo o funzione ha impiegato per eseguire i propri chiamati e non il proprio codice, come illustrato nella Figura 1 per il metodo D.
- Totale:la somma del tempo trascorso con il metodo Self e Children. Questo rappresenta il tempo totale trascorso dall'app per eseguire una chiamata, come illustrato nella Figura 1 per il metodo D.

Figura 2. Un albero dall'alto verso il basso.

Figura 3. Un albero Bottom Up per il metodo C della Figura 5.
La scheda Dal basso verso l'alto mostra un elenco di chiamate in cui l'espansione del nodo di una funzione o di un metodo mostra i relativi chiamanti. Utilizzando la traccia di esempio mostrata nella Figura 2, la Figura 3 fornisce un albero dal basso verso l'alto per il metodo C. L'apertura del nodo per il metodo C nell'albero dal basso verso l'alto mostra ciascuno dei suoi chiamanti unici, i metodi B e D. Tieni presente che, sebbene B chiami C due volte, B viene visualizzato una sola volta quando espandi il nodo per il metodo C nell'albero dal basso verso l'alto. Dopodiché, espandendo il nodo per B vengono visualizzati il chiamante e i metodi A e D.
La scheda Dal basso verso l'alto è utile per ordinare metodi o funzioni in base a quelli che consumano più (o meno) tempo di CPU. Puoi esaminare ogni nodo per determinare quali chiamanti utilizzano la maggior parte del tempo di CPU per richiamare questi metodi o funzioni. Rispetto alla struttura ad albero dall'alto verso il basso, le informazioni sul timing per ogni metodo o funzione in una struttura ad albero dal basso verso l'alto fanno riferimento al metodo nella parte superiore di ogni struttura (nodo principale). Il tempo CPU è rappresentato anche come percentuale del tempo totale del thread durante la registrazione. La tabella seguente spiega come interpretare le informazioni sulla tempistica per il nodo principale e i relativi chiamanti (nodi secondari).
Me stesso | Bambini | Totale | |
---|---|---|---|
Metodo o funzione nella parte superiore dell'albero bottom-up (nodo principale) | Rappresenta il tempo totale impiegato dal metodo o dalla funzione per eseguire il proprio codice e non quello dei chiamati. Rispetto all'albero dall'alto verso il basso, queste informazioni sulle tempistiche rappresentano la somma di tutte le chiamate a questo metodo o funzione per tutta la durata della registrazione. | Rappresenta il tempo totale impiegato dal metodo o dalla funzione per eseguire i chiamati e non il proprio codice. Rispetto all'albero dall'alto verso il basso, queste informazioni sul timing rappresentano la somma di tutte le chiamate ai chiamati di questo metodo o funzione per la durata della registrazione. | La somma del tempo di utilizzo personale e del tempo di utilizzo degli account secondari. |
Chiamanti (nodi secondari) | Rappresenta il tempo totale di esecuzione del codice del destinatario quando viene chiamato dal chiamante. Utilizzando l'albero dal basso verso l'alto nella Figura 6 come esempio, il tempo proprio del metodo B sarebbe uguale alla somma dei tempi propri per ogni esecuzione del metodo C quando viene chiamato da B. | Rappresenta il tempo totale dei figli del destinatario quando viene richiamato dal chiamante. Utilizzando l'albero dal basso verso l'alto nella Figura 6 come esempio, il tempo dei figli per il metodo B sarebbe uguale alla somma dei tempi dei figli per ogni esecuzione del metodo C quando viene chiamato da B. | La somma del tempo di utilizzo personale e del tempo di utilizzo degli account secondari. |
Nota:per una determinata registrazione, Android Studio interrompe la raccolta di nuovi dati quando il profiler raggiunge il limite di dimensione del file (tuttavia, ciò non interrompe la registrazione). In genere, questo avviene molto più rapidamente quando vengono eseguite tracce strumentate, perché questo tipo di tracciamento raccoglie più dati in un periodo di tempo più breve rispetto a una traccia campionata. Se estendi il tempo di ispezione a un periodo della registrazione successivo al raggiungimento del limite, i dati di temporizzazione nel riquadro della traccia non cambiano (perché non sono disponibili nuovi dati). Inoltre, il riquadro della traccia mostra NaN per le informazioni sul timing quando selezioni solo la parte di una registrazione per cui non sono disponibili dati.