Instrumentare l'applicazione .NET in Visual Studio (C#, C++, Visual Basic, F#)
Con il rilascio di Visual Studio 2022 versione 17.5, è possibile usare il nuovo strumento di strumentazione dinamica. Questo strumento mostra il numero esatto di chiamate delle funzioni ed è più veloce rispetto alla versione precedente dello strumento di strumentazione. Questo strumento supporta la strumentazione di .NET Core senza bisogno di PDB. A partire da Visual Studio 2022 versione 17.6 Preview 2, lo strumento supporta anche C/C++.
Lo strumento è simile allo strumento Utilizzo CPU, ad eccezione del fatto che si basa sull'ora del clock invece dell'utilizzo della CPU. Ciò significa che il tempo bloccato, ad esempio il tempo impiegato per l'attesa dei blocchi, verrà visualizzato nella traccia di strumentazione, a differenza dello strumento Utilizzo CPU. Per altre informazioni sull'uso efficace dello strumento di strumentazione, vedere Panoramica della strumentazione e Miglioramento delle prestazioni di Visual Studio con il nuovo strumento di strumentazione.
Instrumentare l'applicazione
Selezionare ALT+F2 (o Debug > Performance Profiler) per aprire il profiler prestazioni in Visual Studio.
Selezionare la casella di controllo Strumentazione .
Se si abilita l'opzione Avvia con raccolta sospesa prima di avviare il profiler, i dati non verranno raccolti finché non si seleziona il pulsante Registra nella visualizzazione sessione di diagnostica.
Nota
Se lo strumento non è disponibile per la selezione, deselezionare la casella di controllo di ogni altro strumento perché alcuni strumenti devono essere eseguiti da soli. Per altre informazioni sull'esecuzione di strumenti insieme, vedere Uso simultaneo di più strumenti profiler.
Se lo strumento non è ancora disponibile, verificare che il progetto soddisfi i requisiti precedenti. Assicurarsi che il progetto sia in modalità release per acquisire i dati più accurati.
Selezionare il pulsante Start per eseguire lo strumento.
Selezionare gli elementi nel programma da instrumentare.
A partire da Visual Studio 2022 versione 17.11 Preview 1, il profiler mantiene gli elementi selezionati per l'esecuzione successiva della profilatura.
Seleziona OK.
Dopo l'avvio dell'esecuzione dello strumento, esaminare lo scenario che si vuole profilare nell'app. Selezionare quindi Arresta raccolta o chiudere l'app per visualizzare i dati.
Analizzare il report di strumentazione
I dati di profilatura sono visualizzati in Visual Studio.
La visualizzazione Dati strumentazione mostra un elenco di funzioni ordinate per esecuzione più lunga, con la funzione con esecuzione più lunga nella parte superiore in Funzioni principali. La sezione Percorso critico mostra lo stack di chiamate per le funzioni che usano più tempo. Questi elenchi consentono di guidare le funzioni in cui si verificano colli di bottiglia delle prestazioni.
Fare clic su una funzione a cui si è interessati e viene visualizzata una visualizzazione più dettagliata.
I dati disponibili sono simili allo strumento Utilizzo CPU, ad eccezione del fatto che si basa sul tempo di clock del muro e sui conteggi delle chiamate anziché sull'utilizzo della CPU.
Analizzare le informazioni dettagliate
Se vengono visualizzate informazioni dettagliate nella sezione Informazioni dettagliate principali, usare il collegamento fornito per ottenere altre informazioni sul problema identificato. Per altre informazioni, vedere Informazioni dettagliate sulla CPU, ma tenere presente che le informazioni per lo strumento strumentazione sono specifiche per l'ora del clock a muro e non per l'utilizzo della CPU.
Inoltre, se si usa Copilot, usare il pulsante Ask Copilot per aprire la finestra di chat di Copilot e Copilot fornirà suggerimenti in base a un esame del codice e a eventuali problemi identificati.
Analizzare i report dettagliati della strumentazione
Per analizzare il report di strumentazione, fare clic su Apri dettagli oppure fare clic su una delle funzioni principali per aprire la visualizzazione Funzioni .
Il report fornisce visualizzazioni diverse dei dati di diagnostica:
- Chiamante/chiamato
- Albero delle chiamate
- moduli
- Funzioni
- Grafico di fiamma
In tutte le visualizzazioni, ad eccezione del chiamante/chiamato, il report di diagnostica viene ordinato in base al totale [unità, %], dal più alto al più basso. Per modificare l'ordinamento o la colonna di ordinamento, selezionare le intestazioni di colonna. È possibile fare doppio clic su una funzione a cui si è interessati e verrà visualizzata l'origine per la funzione, nonché l'evidenziazione che mostra dove viene impiegato il tempo in tale funzione. La tabella mostra le colonne con dati, ad esempio il tempo impiegato nella funzione, incluse le funzioni chiamate (Totale) e una seconda colonna che mostra il tempo impiegato in una funzione, escludendo le funzioni chiamate (Self).
Questi dati consentono di valutare se la funzione stessa è un collo di bottiglia delle prestazioni. Determinare la quantità di dati visualizzati dal metodo per verificare se il codice o le librerie di runtime di terze parti sono il motivo per cui gli endpoint sono lenti o a consumo elevato delle risorse.
Per altre informazioni sull'uso del grafico Flame, vedere Identificare i percorsi caldi con Flame Graph.
Albero delle chiamate di strumentazione
Per visualizzare l'albero delle chiamate, selezionare il nodo padre nel report. Per impostazione predefinita, la pagina Strumentazione viene visualizzata nella visualizzazione Chiamante/chiamato. Nell'elenco a discesa Visualizzazione corrente selezionare Albero delle chiamate. La visualizzazione albero delle chiamate consente di identificare rapidamente i colli di bottiglia delle prestazioni.
È possibile fare clic sui pulsanti Espandi percorso critico e Mostra percorso critico per visualizzare le chiamate di funzione che usano la maggior parte dell'ora di clock della chiamata nella visualizzazione albero delle chiamate.
Di seguito sono riportate altre informazioni sui valori di colonna:
Total indica quanto tempo è stato impiegato nella funzione e in tutte le funzioni chiamate da esso. I valori totali elevati puntano alle funzioni che utilizzano il tempo di clock più elevato.
L'auto indica quanto tempo è stato impiegato nel corpo della funzione, escluso il tempo impiegato in tutte le funzioni chiamate da esso. Valori self elevati possono indicare un collo di bottiglia delle prestazioni all'interno della funzione stessa.
Call Count indica il numero di chiamate di una funzione.
Module Nome del modulo contenente la funzione.