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:

  1. Analisi del consumo di risorse aggregate di una determinata funzione che viene chiamata da più posizioni.
  2. 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?

Funzione di ordinamento nel grafico a fiamme.

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 Fuoco crea effettivamente due grafici a fiamme per la funzione specificata e li unisce:

Grafico a fiamme per la funzione di ordinamento.

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:

Parte inferiore dei grafici a fiamma che mostra i chiamanti di ordinamento.

La metà superiore del grafico mostra i chiamanti di Sort con i chiamanti 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:

Parte superiore dei grafici a forma di fiamma che mostra i chiamanti di ordinamento.

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 call stack 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:

Grafico a fiamme espanso per l'ordinamento.

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:

Grafico a fiamme incentrato su un piccolo frame.

Utilizzando l'elenco di destinazione

Per concentrare il grafico a fiamme su una funzione specifica:

  1. Fai clic su Elenco per aprire la tabella Seleziona funzione di attivazione.
  2. Seleziona il nome di una funzione dalla tabella o, per una funzione specifica, fai clic su Azioni e poi su Metti in primo piano:

Seleziona la tabella della funzione evidenziata.

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 o discendente 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 della 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 sul filtro.

Passaggi successivi