Imposta lo stato attivo sul grafico a fiamme

Quando utilizzi il filtro Stato attivo, selezioni una singola funzione e il grafico a fiamme mostra i percorsi del codice che confluiscono all'interno e all'esterno di quella funzione specifica. Un grafico mirato ti consente di eseguire due attività comuni:

  1. Analizzare il consumo aggregato di risorse di una determinata funzione che viene richiamata da più posizioni.
  2. Analisi della proporzione di tempo trascorso in una funzione per i diversi chiamanti della funzione.

Ad esempio, come si analizza il consumo di risorse in relazione alla funzione Sort utilizzando il grafico a fiamme standard?

Funzione di ordinamento nel grafico delle fiamme.

Nella sezione successiva, analizzeremo il grafico su Sort e risponderemo a questa domanda. I grafici a fiamme in questa pagina sono stati creati impostando rispettivamente la Modalità colore e Confronta con sui valori predefiniti di Nome e Nessuno.

Spiegazione del grafico attivo

Il grafico creato dal filtro Concentrazione crea in modo efficace due grafici a fiamme per la funzione specificata e li unisce:

Grafico a fiamme per focus sulla funzione di ordinamento.

Nel grafico precedente, il frame corrispondente alla funzione Sort è a larghezza intera ed è evidenziato. 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 forma aggregata, ha utilizzato l'8,85% del tempo di CPU.

La metà inferiore del grafico precedente considera la funzione Sort come punto di partenza di un grafico a fiamme standard e mostra tutte le sue chiamate. Puoi creare questa parte con il grafico a fiamme standard utilizzando il filtro Mostra dal frame:

Parte inferiore di grafici a fiamme che mostrano delle chiamate in ordine.

La metà superiore del grafico mostra i chiamanti di Sort con i chiamanti nascosti. Puoi ottenere un'approssimazione della metà superiore utilizzando una serie di filtri. Inizia aggiungendo un filtro Mostra stack per Sort. Quindi, per ogni funzione chiamata da Sort, aggiungi un elemento Nascondi stack o Nascondi frame. In questa situazione, devi aggiungere Nascondi stack per quickSort per eliminare questa funzione e i relativi elementi secondari, quindi aggiungere Nascondi frame per Len e maxDepth:

Grafico a fiamme in alto che mostra i chiamanti ordinati.

Utilizzando questi filtri, l'approssimazione della metà superiore del grafico attivo mostra che la funzione Sort viene raggiunta attraverso stack di chiamate diversi. Tuttavia, le metriche non vengono aggregate, quindi il grafico non illustra il consumo complessivo delle metriche per Sort.

Il grafico attivo è leggermente diverso da un grafico che combina semplicemente le due approssimazioni:

  • C'è un singolo fotogramma per la funzione di messa a fuoco Sort.
  • Il frame della funzione di stato attivo è evidenziato, è un frame a larghezza intera e mostra le metriche che sono l'aggregazione di tutti gli stack di chiamate.
  • Sono presenti più stack di chiamate, ognuno dei quali inizia con un frame root, quindi puoi visualizzare l'intero stack di chiamate.

Selezione di una cornice

Se selezioni un frame in un grafico attivo, il grafico a fiamme viene ridisegnato con lo stack di chiamate di quel frame visualizzato in maggiore dettaglio. Se il frame viene raggiunto tramite più stack di chiamate, viene visualizzato ciascuno di questi stack. Gli stack di chiamate che non includono il frame sono nascosti. Per ripristinare lo stato originale del grafico, seleziona il fotogramma corrispondente alla funzione di messa a fuoco.

Nell'esempio precedente, Sort viene chiamato da (*byFreq).sort e (*byLiteral).sort. Per visualizzare lo stack di chiamate per (*byLiteral).sort in dettaglio, seleziona il frame. Puoi selezionare un altro frame e perfezionare ulteriormente gli stack di chiamate visualizzati:

Grafico a fiamme espanso relativo all'ordinamento.

Per ripristinare lo stato originale di un grafico a fiamme attivo, seleziona il frame che mostra il valore del filtro Stato attivo. In questo caso, seleziona la cornice grigia con l'etichetta Sort. Tieni presente che per ripristinare lo stato originale di un grafico a fiamme standard, devi selezionare il frame principale.

Analisi del grafico

Per analizzare un grafico a fiamme attivo, puoi utilizzare gli stessi controlli e filtri che utilizzi per analizzare un grafico a fiamme standard. Tuttavia, ci sono differenze nel modo in cui i grafici interagiscono con il puntatore:

  • Se il puntatore passa sopra un frame, la descrizione comando mostra i dati delle metriche. Per un grafico a fiamme standard, vengono mostrati i dati delle metriche totali per il frame. Per un grafico a fiamme attivo, vengono mostrati i dati delle metriche aggregate per la funzione.

  • Se selezioni un frame, il grafico a fiamme viene ridisegnato con il frame visualizzato a larghezza intera. Per ripristinare la forma originale di un grafico a fiamme standard, devi selezionare il frame superiore. Per ripristinare la forma originale di un grafico a fiamme attivo, devi selezionare il frame che mostra il valore del filtro di stato attivo.

Per informazioni sul grafico attivo quando confronti i profili, consulta la sezione Concentrazione su un confronto.

Impostazione del filtro di messa a fuoco

Esistono diversi metodi che puoi utilizzare per impostare un filtro di messa a fuoco, ma generano lo stesso grafico.

Utilizzando il grafico

Posiziona il puntatore sul frame che ti interessa, quindi fai clic su Metti a fuoco nella descrizione comando del frame. La funzione di messa a fuoco viene estratta dall'inquadratura. In questo esempio, il grafico a fiamme, che si espande intorno alla funzione (*huffmanBitWriter).write, mostra tre diversi stack di chiamate:

Grafico a fiamme focalizzato su una piccola cornice.

Utilizzando l'elenco di elementi in evidenza

Per concentrare il grafico a fiamme su una funzione specifica:

  1. Fai clic su Elenco per aprire la tabella Seleziona funzione di impostazione dello stato attivo.
  2. Seleziona il nome di una funzione dalla tabella oppure, per una funzione specifica, fai clic su Azioni e poi seleziona Stato attivo:

Seleziona la tabella della funzione di impostazione dello stato attivo.

Se la funzione selezionata può essere chiamata tramite stack di chiamate diversi, ogni stack di chiamate viene visualizzato nel grafico a fiamme.

Puoi ordinare le righe della tabella in senso crescente o decrescente selezionando un elemento di intestazione della tabella. Ogni riga della tabella mostra un nome di funzione e le statistiche relative all'esecuzione della funzione. Questa tabella mostra che l'esecuzione della funzione (*compressor).deflate richiede 2,78 secondi, di cui 1,8 secondi nella funzione stessa e il resto del tempo trascorso nel relativo stack di chiamate. Una colonna percentuale indica che il 57% del tempo di esecuzione totale viene trascorso nella funzione (*compressor).deflate. Un'altra colonna indica che l'89% delle volte, (*compressor).deflate o una funzione nel proprio stack di chiamate, è in esecuzione. Infine, la colonna di conteggio indica che ci sono tre sequenze che richiamano la funzione (*compressor).deflate.

Quando confronti i profili, i contenuti dell'elenco dei momenti salienti sono diversi. Per ulteriori informazioni, consulta la sezione Come impostare lo stato attivo su un confronto.

Tramite la barra dei filtri

Fai clic sul testo grigio Aggiungi filtro dati profilo nella barra dei filtri, quindi inserisci Focus: e una stringa che identifichi la funzione su cui impostare lo stato attivo. Puoi utilizzare una sottostringa, inclusi i prefissi del pacchetto, o il nome completo. Quando fornisci una stringa ambigua, viene selezionata la funzione che corrisponde meglio alla stringa.

Se preferisci, puoi fare clic su Filtri, selezionare Stato attivo e inserire la stringa identificativa.

Se la funzione selezionata può essere chiamata tramite stack di chiamate diversi, ogni stack di chiamate viene visualizzato nel grafico a fiamme.

Rimozione del filtro di messa a fuoco

Per rimuovere il filtro di stato attivo, fai clic su Chiudi nel filtro.

Passaggi successivi