Impostare lo stato attivo sul grafico a fiamme
Quando utilizzi il filtro Fuoco, selezioni una singola funzione e il grafico a forma di fiamma mostra i percorsi di codice che entrano e escono da quella funzione specifica. Un grafico in primo piano ti consente di eseguire due attività comuni:
- Analisi del consumo di risorse aggregate di una determinata funzione che viene chiamata da più posizioni.
- Analisi della proporzione di tempo trascorso in una funzione per diversi invocanti della funzione.
Ad esempio, come analizzi il consumo di risorse intorno alla funzione Sort
utilizzando il grafico a fiamme standard?
Nella sezione successiva, concentriamoci sul grafico su Sort
e rispondiamo a questa domanda.
I grafici a forma di fiamma in questa pagina sono stati creati con Modalità di colore
e Confronta con impostati sui valori predefiniti di Nome e Nessuna
rispettivamente.
Spiegazione del grafico in primo piano
Il grafico creato dal filtro Fai il punto crea effettivamente due grafici a fiamme per la funzione specificata e li unisce:
Nel grafico precedente, il frame corrispondente alla funzione Sort
è evidenziato e a larghezza intera. Il testo del frame include il nome della funzione, una percentuale e il numero di profili utilizzati per l'analisi. In questo caso,
le metriche indicano che la funzione Sort
, in aggregato, ha consumato
l'8,85% del tempo della CPU.
La metà inferiore del grafico precedente tratta la funzione Sort
come punto di partenza di un grafico di fiamma standard e mostra tutti i suoi chiamati.
Puoi creare questa parte con il grafico a forma di fiamma standard utilizzando il filtro
Mostra dal frame:
La metà superiore del grafico mostra i chiamanti di Sort
con i chiamati nascosti. Puoi fare un'approssimazione della metà superiore utilizzando una serie di filtri.
Per iniziare, aggiungi un filtro Mostra serie per Sort
. Poi, per ogni funzione chiamata da Sort
, aggiungi Nascondi serie o Nascondi frame. In questa situazione, devi aggiungere un'opzione Nascondi serie per quickSort
per eliminare questa funzione e i relativi elementi secondari, quindi aggiungere Nascondi frame per Len
e maxDepth
:
Utilizzando questi filtri, l'approssimazione della metà superiore del grafico in primo piano
mostra che la funzione Sort
viene raggiunta tramite diversi
stack di chiamate. Tuttavia, le metriche non sono aggregate, pertanto il grafico non illustra il consumo complessivo delle metriche per Sort
.
Il grafico in primo piano è leggermente diverso da un grafico che combina semplicemente le due approssimazioni:
- Esiste un solo frame per la funzione di messa a fuoco
Sort
. - Il frame della funzione di messa a fuoco è evidenziato, è a larghezza intera e mostra le metriche che rappresentano l'aggregazione di tutti gli stack di chiamate.
- Esistono più stack di chiamate, ognuno che inizia con un frame
root
, in modo da poter visualizzare l'intero stack di chiamate.
Selezionare un frame
Se selezioni un frame in un grafico in primo piano, il grafico a forma di fiamma viene ridisegnato con la pila di chiamate del frame visualizzata in modo più dettagliato. Se il frame viene raggiunto tramite più stack di chiamate, viene visualizzato ciascuno di questi stack. Le serie di chiamate che non includono il frame non sono visibili. Per ripristinare il grafico allo stato originale, seleziona il frame che corrisponde alla funzione di messa a fuoco.
Nell'esempio precedente, Sort
viene chiamato da (*byFreq).sort
e da
(*byLiteral).sort
. Per visualizzare in modo più dettagliato la pila di chiamate per (*byLiteral).sort
, seleziona il frame.
Puoi selezionare un altro frame e perfezionare ulteriormente le serie di chiamate visualizzate:
Per ripristinare lo stato originale di un grafico a forma di fiamma in primo piano, seleziona il frame che visualizza il valore del filtro In primo piano. In questo caso, seleziona il riquadro grigio con l'etichetta Sort
. Tieni presente che per ripristinare lo stato originale di un grafico a fiamma standard, devi selezionare il frame principale.
Analisi del grafico
Per analizzare un grafico di fiamma incentrato, utilizza gli stessi controlli e filtri che utilizzi per analizzare un grafico di fiamma standard. Tuttavia, esistono differenze nel modo in cui i grafici interagiscono con il cursore:
Se passi il cursore del mouse sopra un frame, la descrizione comando mostra i dati delle metriche. Per un grafico a fiamma standard, vengono mostrati i dati delle metriche totali per il frame. Per un grafico di fiamma incentrato, vengono mostrati i dati delle metriche aggregate per la funzione.
Se selezioni un frame, il grafico a forma di fiamma viene ridisegnato con il frame visualizzato in tutta la larghezza. Per ripristinare la forma originale di un grafico a forma di fiamma standard, devi selezionare il frame superiore. Per ripristinare un grafico di fiamma in primo piano nella sua forma originale, devi selezionare il frame che mostra il valore del filtro di messa a fuoco.
Per informazioni sul grafico in primo piano quando confronti i profili, consulta Mettere in primo piano un confronto.
Impostazione del filtro di messa a fuoco
Esistono diversi metodi che puoi utilizzare per impostare un filtro di concentrazione, ma il risultato è lo stesso grafico.
Utilizzando il grafico
Posiziona il cursore sul frame di interesse, quindi fai clic su Metti a fuoco nella descrizione comando del frame.
La funzione di messa a fuoco viene estratta dal frame.
In questo esempio, il grafico a forma di fiamma, espanso intorno alla funzione (*huffmanBitWriter).write
, mostra tre diversi stack di chiamate:
Utilizzando l'elenco di destinazione
Per concentrare il grafico a fiamme su una funzione specifica:
- Fai clic su Elenco list per aprire la tabella Seleziona funzione di attivazione.
- Seleziona il nome di una funzione dalla tabella o, per una funzione specifica, fai clic su Azioni more_vert e poi su Metti in primo piano:
Se la funzione selezionata può essere chiamata tramite diversi stack di chiamate, ogni stack di chiamate viene mostrato nel grafico a forma di fiamma.
Puoi ordinare le righe della tabella in ordine crescente arrow_upward o discendente arrow_downward selezionando un elemento di intestazione della tabella.
Ogni riga della tabella mostra il nome di una funzione e le statistiche relative all'esecuzione della funzione.
Questa tabella mostra che la funzione (*compressor).deflate
richiede 2,78 secondi per essere eseguita, di cui 1,8 secondi nella funzione stessa e il resto del tempo nello stack di chiamate.
Una colonna percentuale indica che il 57% del tempo di esecuzione totale viene speso
nella funzione (*compressor).deflate
. Un'altra colonna indica che l'89% del tempo, (*compressor).deflate
o una funzione nel relativo stack di chiamate, è in esecuzione.
Infine, la colonna del conteggio indica che esistono tre sequenze che richiamano la funzione (*compressor).deflate
.
Quando confronti i profili, i contenuti dell'elenco in primo piano sono diversi. Per ulteriori informazioni, consulta la sezione Mettere a fuoco un confronto.
Utilizzando la barra dei filtri
Fai clic sul testo grigio Aggiungi filtro dati del profilo nella barra dei filtri, poi inserisci Focus:
e una stringa che identifichi la funzione su cui concentrarti. Puoi utilizzare una sottostringa, inclusi i prefissi dei pacchetti,
o il nome completo. Quando fornisci una stringa ambigua, viene selezionata la funzione corrispondente alla migliore corrispondenza con la stringa.
Se preferisci, puoi fare clic su Filtri, selezionare In evidenza e inserire la stringa di identificazione.
Se la funzione selezionata può essere chiamata tramite diversi stack di chiamate, ogni stack di chiamate viene mostrato nel grafico a forma di fiamma.
Rimozione del filtro di messa a fuoco
Per rimuovere il filtro di messa a fuoco, fai clic su Chiudi close sul filtro.