Condividi tramite


Esaminare prima di tutto gli strumenti di profilatura (C#, Visual Basic, C++, F#)

Gli strumenti di misurazione delle prestazioni delle applicazioni sono essenziali per gli sviluppatori che vogliono ottimizzare il codice e migliorare le prestazioni dell'applicazione. Visual Studio offre una gamma di strumenti di profilatura e diagnostica che consentono di diagnosticare l'utilizzo della memoria e della CPU e altri problemi a livello di applicazione. Con questi strumenti, è possibile accumulare dati sulle prestazioni durante l'esecuzione dell'applicazione. Un profiler consente di prendere decisioni informate rapidamente fornendo una rappresentazione visiva dei tempi di esecuzione e dell'utilizzo della CPU per l'applicazione. In questo articolo viene illustrato rapidamente gli strumenti di profilatura più comuni.

Per informazioni sulla scelta dello strumento corretto o per visualizzare il supporto degli strumenti di profilatura per diversi tipi di app, vedere Quale strumento è consigliabile usare? Per un'esercitazione che illustra un approccio generale all'ottimizzazione del codice usando gli strumenti di profilatura, vedere Case study: Guida per principianti all'ottimizzazione del codice.

Per un'esperienza ottimale con questa documentazione, scegliere il linguaggio di sviluppo o il runtime preferito dall'elenco nella parte superiore dell'articolo.

Misurare le prestazioni nelle build di versione

Gli strumenti nel Profilatore delle prestazioni sono progettati per fornire l'analisi per le versioni di rilascio . In Performance Profiler puoi raccogliere informazioni di diagnostica durante l'esecuzione dell'app e quindi esaminare le informazioni raccolte dopo l'arresto dell'app (un'analisi post-mortem).

Aprire il Profiler Prestazioni scegliendo Debug>Profiler Prestazioni (o Alt + F2).

screenshot di Profiler Prestazioni.

screenshot di Profiler Prestazioni.

Per ulteriori informazioni sull'uso degli strumenti Utilizzo CPU e Utilizzo memoria all'interno del Profiler delle prestazioni rispetto agli strumenti integrati nel debugger, vedere Eseguire gli strumenti di profilazione nelle build di rilascio o di debug.

Gli strumenti disponibili nel profiler prestazioni includono:

Per visualizzare il supporto degli strumenti di profilatura per diversi tipi di app, vedere Quale strumento è consigliabile usare?.

In alcuni scenari, la finestra consente di selezionare più strumenti di profilatura. Strumenti come l'utilizzo della CPU possono fornire dati complementari che è possibile usare per facilitare l'analisi. È anche possibile usare il profiler della riga di comando per abilitare scenari che coinvolgono più strumenti di profilatura.

Misurare le prestazioni durante il debug

Gli strumenti di profilatura a cui è possibile accedere durante una sessione di debug sono disponibili nella finestra Strumenti di diagnostica. La finestra Strumenti di diagnostica viene visualizzata automaticamente a meno che non sia stata disattivata. Per visualizzare la finestra, fare clic su Debug/Windows/Mostra strumenti di diagnostica oppure premere CTRL + ALT + F2). Con la finestra aperta, è possibile selezionare gli strumenti per cui si desidera raccogliere i dati.

finestra Strumenti di Diagnostica

Durante il debug, è possibile usare la finestra strumenti di diagnostica per analizzare CPU, utilizzo della memoria, contatori .NET ed è possibile visualizzare eventi che mostrano informazioni correlate alle prestazioni.

Finestra Strumenti di Diagnostica

Durante il debug, è possibile usare la finestra strumenti di diagnostica per analizzare l'utilizzo della CPU e della memoria ed è possibile visualizzare gli eventi che mostrano informazioni correlate alle prestazioni.

Vista riepilogativa strumenti di diagnostica

Visualizzazione Riepilogo Strumenti di Diagnostica

La finestra Strumenti di diagnostica è un modo comune per profilare le app, ma per le build di rilascio è anche possibile eseguire un'analisi post-mortem dell'app. Per altre informazioni sui diversi approcci, vedere Eseguire gli strumenti di profilatura nelle build di rilascio o di debug. Per visualizzare il supporto degli strumenti di profilatura per diversi tipi di app, vedere Quale strumento è consigliabile usare?.

Gli strumenti disponibili nella finestra Strumenti di diagnostica o durante una sessione di debug includono:

Consiglio

Usare il riavvio per ignorare la pagina di avvio ed eseguire automaticamente con le impostazioni precedenti premendo Alt+F2 oppure facendo clic su Debug > Profiler delle prestazioni.

Nota

Windows 8 e versioni successive sono necessari per eseguire gli strumenti di profilatura con il debugger (finestra strumenti di diagnostica).

Analizzare l'utilizzo della CPU

Lo strumento Utilizzo CPU è un buon punto di partenza per iniziare ad analizzare le prestazioni dell'app. Verranno fornite altre informazioni sulle risorse della CPU che l'app sta usando. È possibile usare lo strumento di utilizzo della CPU integrato nel debugger o lo strumento di utilizzo della CPU post-mortem .

Quando si usa lo strumento Utilizzo CPU integrato nel debugger, aprire la finestra Strumento di diagnostica (se è chiusa, scegliere Debug/Windows/Mostra strumenti di diagnostica). Mentre si esegue il debug, aprire la vista Riepilogo e selezionare Registra profilo CPU.

Abilitare l'utilizzo della CPU nei Strumenti di Diagnostica

Abilitare l'utilizzo della CPU negli Strumenti di diagnostica

Un modo per usare lo strumento consiste nell'impostare due punti di interruzione nel codice, uno all'inizio e uno alla fine della funzione o l'area del codice da analizzare. Esamina i dati di profilatura quando ti fermi al secondo punto di interruzione.

La visualizzazione Utilizzo CPU mostra un elenco di funzioni ordinate per durata di esecuzione, con la funzione che dura più a lungo nella parte superiore sotto Funzioni principali. La sezione percorso critico mostra lo stack di chiamate per le funzioni che usano la maggior parte della CPU. Questi elenchi aiutano a individuare le funzioni in cui si verificano colli di bottiglia delle prestazioni.

Strumenti di diagnostica Visualizzazione Utilizzo CPU

La visualizzazione dell'utilizzo della CPU ti mostra un elenco di funzioni ordinate in base alla durata di esecuzione, con la funzione che esegue più a lungo in cima. Questo può aiutarvi a individuare le funzioni in cui si verificano colli di bottiglia delle prestazioni.

Strumenti di diagnostica Utilizzo CPU

Fare clic su una funzione a cui si è interessati e verrà visualizzato un visualizzazione Albero delle chiamate più dettagliata, con la funzione selezionata evidenziata. La tabella mostra le colonne con dati, ad esempio il tempo impiegato nella funzione , incluse le funzioni chiamate (Totale CPU) e una seconda colonna che mostra il tempo impiegato in una funzione, escludendo le funzioni chiamate (Self CPU). Questi dati consentono di valutare se la funzione è essa stessa un collo di bottiglia delle prestazioni.

Consiglio

Il profiler di Visual Studio supporta sia la raccolta che la visualizzazione di tracce. Il profiler può anche visualizzare tracce raccolte in precedenza da altri strumenti, ad esempio dotnet-trace. Dotnet-trace produce risultati di campionamento, non una traccia instrumentata. Per altre informazioni, vedere dotnet-trace.

Strumenti di diagnostica visualizzazione

Fare clic su una funzione di interesse e verrà visualizzata una visualizzazione a tre riquadri chiamata "farfalla" più dettagliata, con la funzione selezionata al centro della finestra, la funzione chiamante a sinistra e le funzioni chiamate a destra. La sezione Corpo della Funzione mostra la quantità totale di tempo (e la percentuale di tempo) impiegata nel corpo della funzione, escludendo il tempo impiegato per le chiamate e le funzioni chiamate. Questi dati consentono di valutare se la funzione stessa è un collo di bottiglia delle prestazioni.

visualizzazione

Analizzare l'utilizzo della memoria

La finestra Strumenti di diagnostica consente anche di valutare l'utilizzo della memoria nell'app usando lo strumento Utilizzo memoria. Ad esempio, è possibile esaminare il numero e le dimensioni degli oggetti nell'heap. È possibile usare lo strumento di utilizzo della memoria integrato nel debugger o lo strumento di utilizzo della memoria post-mortem nel profiler prestazioni.

Gli sviluppatori .NET possono scegliere tra lo strumento di allocazione di oggetti .NET o lo strumento di utilizzo della memoria .

  • Lo strumento di allocazione di oggetti .NET consente di identificare i modelli di allocazione e le anomalie nel codice .NET e di identificare i problemi comuni con Garbage Collection. Questo strumento funziona solo come strumento post-mortem. È possibile eseguire questo strumento in computer locali o remoti.
  • Lo strumento utilizzo della memoria è utile per identificare le perdite di memoria, che in genere non sono comuni nelle applicazioni .NET. Se è necessario usare le funzionalità del debugger durante il controllo della memoria, ad esempio eseguendo passo passo il codice, è consigliabile utilizzare lo strumento Utilizzo della memoria integrato nel debugger.

Per analizzare l'utilizzo della memoria con lo strumento Utilizzo Memoria, è necessario acquisire almeno uno snapshot di memoria. Spesso, il modo migliore per analizzare la memoria consiste nell'acquisire due snapshot; prima di un sospetto problema di memoria e il secondo snapshot subito dopo che si verifica un sospetto problema di memoria. È quindi possibile visualizzare una differenza dei due snapshot e vedere esattamente cosa è cambiato. La figura seguente mostra la creazione di uno snapshot con lo strumento integrato nel debugger.

Creare uno snapshot negli strumenti di diagnostica

Creare uno snapshot negli strumenti di diagnostica

Quando si seleziona uno dei collegamenti a freccia, viene visualizzata una visualizzazione differenziale dell'heap (una freccia in su rossa Aumento utilizzo memoria mostra un numero crescente di oggetti (a sinistra) o una dimensione dell'heap crescente (a destra). Se si fa clic sul collegamento destro, si ottiene una visualizzazione heap differenziale ordinata in base agli oggetti che hanno aumentato la maggior parte delle dimensioni dell'heap. Ciò consente di individuare i problemi di memoria. Nell'illustrazione seguente, ad esempio, i byte usati da ClassHandlersStore oggetti sono aumentati di 3,492 byte nella seconda istantanea.

visualizzazione diff diff degli strumenti di diagnostica

visualizzazione diff diff degli strumenti di diagnostica

Se si fa clic sul collegamento a sinistra nella visualizzazione utilizzo memoria, la visualizzazione heap è organizzata in base al numero di oggetti; gli oggetti di un particolare tipo che hanno visto il maggiore incremento numerico vengono visualizzati nella parte superiore (ordinati in base alla colonna conteggio diff).

Strumentazione

Lo strumento di strumentazione è simile allo strumento di utilizzo della CPU, eccetto che fornisce conteggi esatti delle chiamate e tempi di clock anziché l'utilizzo della CPU. Il metodo di strumentazione richiede un sovraccarico maggiore rispetto allo strumento di utilizzo della CPU. Questo strumento è disponibile in Performance Profiler. Aprire il Profiler Prestazioni selezionando Debug>Profiler Prestazioni (o Alt + F2). Per altre informazioni, vedere Instrumentation.

Screenshot che mostra i dati di strumentazione .NET. dati di strumentazione .NET

Esaminare l'I/O dei file

Lo strumento di I/O File consente di comprendere come ottimizzare le operazioni di I/O File per migliorare le prestazioni nelle tue applicazioni. Se stai tentando di analizzare e diagnosticare tempi di caricamento lenti, il nuovo strumento File I/O consente di comprendere in che modo le operazioni di I/O influiscono sul tempo impiegato. Questo strumento è disponibile in Performance Profiler. Aprire il Profiler Prestazioni scegliendo Debug > Profiler Prestazioni (o Alt + F2).

Lo strumento mostra le operazioni di lettura e scrittura di file in una visualizzazione elenco a schede.

Screenshot che mostra lo strumento File IO arrestato.

Esaminare le prestazioni usando PerfTips

Spesso, il modo più semplice per visualizzare le informazioni sulle prestazioni consiste nell'usare PerfTips. Usando PerfTips, è possibile visualizzare le informazioni sulle prestazioni durante l'interazione con il codice. È possibile controllare informazioni come la durata dell'evento (misurata dall'ultima sospensione del debugger o dall'avvio dell'app). Ad esempio, se si esamina il codice passo per passo (F10, F11), PerfTips mostra la durata del runtime dell'app dall'azione precedente al passaggio corrente.

screenshot di PerfTips.

Screenshot di PerfTips.

È possibile usare PerfTips per esaminare il tempo necessario per l'esecuzione di un blocco di codice o il tempo necessario per il completamento di una singola funzione.

In PerfTips vengono visualizzati gli stessi eventi che appaiono anche nella visualizzazione eventi degli strumenti di diagnostica. Nella visualizzazione eventi è possibile visualizzare diversi eventi che si verificano durante il debug, come l'impostazione di un punto di interruzione o un'operazione di avanzamento del codice.

screenshot della visualizzazione eventi degli strumenti di diagnostica.

screenshot della visualizzazione Eventi degli strumenti di diagnostica.

Nota

Se disponi di Visual Studio Enterprise, puoi anche visualizzare eventi IntelliTrace in questa scheda.

Analizzare il codice asincrono (.NET)

Lo strumento asincrono .NET consente di analizzare le prestazioni del codice asincrono nell'applicazione. Questo strumento è disponibile in Performance Profiler. Aprire il Profiler delle Prestazioni scegliendo Debug>Profiler delle Prestazioni (o Alt + F2).

Lo strumento mostra ogni operazione asincrona in modalità elenco. È possibile visualizzare informazioni quali ora di inizio, ora di fine e tempo totale per un'operazione asincrona.

Strumento Asincrono .NET arrestato

Questo strumento è supportato per le app .NET Core e .NET 5+.

Analizzare il codice asincrono (.NET)

Lo strumento asincrono .NET consente di analizzare le prestazioni del codice asincrono nell'applicazione. Questo strumento è disponibile in Performance Profiler. Aprire il Profiler prestazioni scegliendo Debug>Profiler prestazioni (o Alt + F2).

Lo strumento mostra ogni operazione asincrona in una visualizzazione a elenco. È possibile visualizzare informazioni quali ora di inizio, ora di fine e tempo totale per un'operazione asincrona.

Strumento Asincrono .NET Arrestato

Questo strumento è supportato per le app .NET Core e .NET 5+.

Analizzare le prestazioni del database (.NET)

Per le app .NET Core e .NET 5+ che usano ADO.NET o Entity Framework Core, lo strumento di database consente di registrare le query di database eseguite dall'applicazione durante una sessione di diagnostica. È quindi possibile analizzare le informazioni sulle singole query per individuare le posizioni in cui è possibile migliorare le prestazioni dell'app. Questo strumento è disponibile in Performance Profiler. Aprire il Profiler Prestazioni scegliendo Debug>Profiler Prestazioni (o ALT + F2).

Lo strumento mostra le query in una visualizzazione elenco. È possibile visualizzare informazioni come l'ora di inizio e la durata della query.

Allocazione

Visualizzare i contatori .NET (.NET)

A partire da Visual Studio 2019 versione 16.7, è possibile usare lo strumento contatori .NET in Visual Studio per visualizzare i contatori delle prestazioni. È possibile visualizzare i contatori creati usando contatori dotnet. dotnet counters supporta molti contatori, come l'utilizzo della CPU e le dimensioni dell'heap del Garbage Collector.

Lo strumento mostra i valori attivi per ogni contatore in una visualizzazione elenco.

strumento .NET per la raccolta dei dati.

Questo strumento è supportato per le app .NET Core e .NET 5+.

Esaminare gli eventi dell'applicazione

Il visualizzatore eventi generico consente di visualizzare l'attività dell'applicazione tramite un elenco di eventi, ad esempio caricamento del modulo, avvio del thread e configurazioni di sistema, per facilitare la diagnosi delle prestazioni dell'applicazione direttamente all'interno del profiler di Visual Studio. Questo strumento è disponibile in Performance Profiler. Aprire il Profiler Prestazioni scegliendo Debug>Profiler Prestazioni (o Alt + F2).

Lo strumento mostra ogni evento in una visualizzazione elenco. Le colonne forniscono informazioni su ogni evento, ad esempio il nome dell'evento, il timestamp e l'ID processo.

traccia del Visualizzatore eventi

Visualizzare eventi personalizzati nei grafici della sequenza temporale

È possibile creare eventi personalizzati a livello di programmazione che vengono visualizzati come icone nei grafici della sequenza temporale, ad esempio i grafici relativi all'utilizzo della CPU e all'utilizzo della memoria. Per ulteriori informazioni, consultare Aggiungere contrassegni utente alla sequenza temporale.

Analizzare l'utilizzo delle risorse (XAML)

Nelle app XAML, ad esempio app WPF desktop di Windows e app UWP, puoi analizzare l'utilizzo delle risorse usando lo strumento Sequenza temporale dell'applicazione. Ad esempio, è possibile analizzare il tempo impiegato dall'applicazione per preparare i fotogrammi dell'interfaccia utente (layout e rendering), la manutenzione delle richieste di rete e disco e in scenari come l'avvio dell'applicazione, il caricamento di pagine e il ridimensionamento della finestra. Per usare lo strumento, scegliere Application Timeline nel profiler di prestazioni e quindi scegliere Avvia. Nella tua app, analizza lo scenario con un sospetto problema di consumo delle risorse e poi scegli Interrompi raccolta per generare il report.

Le frequenze dei fotogrammi basse nel grafico della velocità effettiva visiva possono corrispondere a problemi visivi che si verificano durante l'esecuzione dell'app. Analogamente, i numeri elevati nel grafico sull'utilizzo del thread dell'interfaccia utente possono corrispondere anche ai problemi di reattività dell'interfaccia utente. Nel report è possibile selezionare un periodo di tempo con un sospetto problema di prestazioni e quindi esaminare le attività dettagliate del thread dell'interfaccia utente nella visualizzazione Dettagli sequenza temporale (riquadro inferiore).

strumento di profilatura della sequenza temporale dell'applicazione

strumento di profilazione della sequenza temporale dell'applicazione

Nella visualizzazione Dettagli sequenza temporale è possibile trovare informazioni quali il tipo di attività (o l'elemento dell'interfaccia utente coinvolto) insieme alla durata dell'attività. Ad esempio, nell'illustrazione, un evento layout per un controllo Grid impiega 57,53 ms.

Per altre informazioni, vedere sequenza temporale dell'applicazione .

Esaminare gli eventi di prestazioni e accessibilità dell'interfaccia utente (UWP)

Nelle app UWP puoi abilitare 'analisi dell'interfaccia utente nella finestra Strumenti di diagnostica. Lo strumento cerca problemi comuni di prestazioni o accessibilità e li visualizza nella visualizzazione eventi durante il debug. Le descrizioni degli eventi forniscono informazioni che consentono di risolvere i problemi.

Visualizzare gli eventi di analisi dell'interfaccia utente negli strumenti di diagnostica

Visualizzare gli eventi di analisi dell'interfaccia utente negli strumenti di diagnostica

Analizzare l'utilizzo della GPU (Direct3D)

Nelle app Direct3D (i componenti Direct3D devono essere in C++), è possibile esaminare l'attività sulla GPU e analizzare i problemi di prestazioni. Per altre informazioni, vedere utilizzo della GPU. Per usare lo strumento, scegliere Utilizzo GPU nel profiler delle prestazioni, quindi scegliere Avvia. Nel tuo app, procedi attraverso lo scenario a cui sei interessato per la profilazione e quindi scegli Interrompi raccolta per generare un report.

Quando si seleziona un periodo di tempo nei grafici e si sceglie visualizzare i dettagli, viene visualizzata una visualizzazione dettagliata nel riquadro inferiore. Nella visualizzazione dettagliata è possibile esaminare la quantità di attività in ogni CPU e GPU. Selezionare gli eventi nel riquadro più basso per ottenere i popup nella sequenza temporale. Ad esempio, selezionare l'evento Present per visualizzare i popup delle chiamate Present. Le linee verticali VSync grigio chiaro possono essere usate come riferimento per capire se determinate chiamate Present hanno mancato la VSync. Deve esserci una chiamata Present tra ogni due VSync per consentire all'app di mantenere costantemente 60 FPS.

strumento di profilatura utilizzo GPU

strumento di profilatura utilizzo GPU Utilizzo GPU Diag

È anche possibile usare i grafici per determinare se sono presenti colli di bottiglia nelle prestazioni causati da CPU o GPU.

Analizzare le prestazioni (strumenti legacy)

In Visual Studio 2019, l'Esplora prestazioni legacy e gli strumenti di profilazione correlati, come la Creazione guidata prestazioni, sono stati integrati nel Profiler delle prestazioni, che è possibile aprire usando Debug>Profiler delle prestazioni. In Performance Profiler gli strumenti di diagnostica disponibili dipendono dalla destinazione scelta e dal progetto di avvio corrente. Lo strumento Utilizzo CPU fornisce la funzionalità di campionamento precedentemente supportata nella Procedura guidata delle prestazioni. Lo strumento di Strumentazione offre la funzionalità di profilazione strumentata (per conteggi e durate precise delle chiamate) che era presente nella Procedura guidata delle prestazioni. Anche ulteriori strumenti di memoria vengono visualizzati nel Profiler delle prestazioni.

Strumento Esplora Prestazioni