Quale strumento per le prestazioni è consigliabile usare? (C#, Visual Basic, C++, F#)

Visual Studio offre un'ampia gamma di strumenti di profilatura che consentono di diagnosticare diversi tipi di problemi di prestazioni dell'app a seconda del tipo di app. In questo articolo vengono fornite informazioni utili per trovare lo strumento appropriato per lo scenario e il tipo di applicazione.

Per un approccio generale all'ottimizzazione del codice usando gli strumenti di profilatura, vedere Case study: Guida per principianti all'ottimizzazione del codice.

Quale strumento si deve usare?

La tabella seguente elenca i diversi strumenti offerti da Visual Studio e offre scenari comuni per la scelta dello strumento.

Strumento di prestazioni Descrizione Quando usare lo strumento?
Uso di CPU Mostra la posizione in cui la CPU sta impiegando tempo. • Avviare un'indagine per problemi generali di prestazioni.
• Analizzare l'utilizzo elevato della CPU del server.
• Analizzare gli scenari DevOps, ad esempio quando gli ordini non passano al sito Web di vendita al dettaglio.
• Ottimizzare l'utilizzo della CPU.
• Analizzare la latenza nelle chiamate API.
Grafico di fiamma Visualizzare all'interno dello strumento Utilizzo CPU che fornisce una visualizzazione alternativa dell'albero delle chiamate. Analizzare la latenza nelle chiamate API
Percorso critico Visualizzare all'interno dello strumento Utilizzo CPU che mostra dove è stata impiegata la maggior parte del tempo di CPU nell'applicazione. Analizzare la latenza nelle chiamate API
Utilizzo memoria Mostra la memoria dell'app per individuare problemi quali perdite di memoria. • Ottimizzare l'utilizzo della
memoria• Analizzare il blocco
dell'interfaccia utente• Analizzare la perdita di memoria sospetta (codice nativo)
Allocazione di oggetti .NET Mostra la posizione in cui gli oggetti .NET vengono allocati e informazioni su Garbage Collection. • Ottimizzare l'utilizzo della
memoria .NET• Analizzare l'operazione di Garbage Collection
Strumentazione Mostra i conteggi e i tempi di chiamata esatti. • È necessario uno strumento come l'utilizzo della CPU, ma si vuole che i conteggi delle chiamate e il tempo esatto trascorsi nelle funzioni in base all'ora di clock del muro.
• Si desidera visualizzare il tempo bloccato, ad esempio il tempo trascorso in attesa di blocchi.
• Nota: questo strumento richiede un sovraccarico aggiuntivo.
File I/O Mostra le operazioni di I/O dei file e il tempo necessario e la quantità di dati elaborati. Analizzare il blocco dell'interfaccia utente
PerfTips Mostra una rapida misurazione delle informazioni sulle prestazioni durante l'interazione con il codice. Durante il debug, si vuole visualizzare il tempo trascorso tra l'operazione del passaggio precedente (o il punto di interruzione) al passaggio o al punto di interruzione corrente.
Visualizzatore eventi Mostra le richieste HTTP, i messaggi di log e le eccezioni. • Analizzare la latenza nelle chiamate
API• Analizzare le applicazioni lente in esecuzione in un server Web remoto
.NET Async Mostra l'utilizzo asincrono/await nelle app .NET. Esaminare il sospetto problema di prestazioni con il codice asincrono.
Contatori .NET Report live per i contatori .NET. • Avviare un'indagine per problemi generali di prestazioni.
• Si vuole una traccia per le metriche basate su contatore .NET, ad esempio eccezioni al secondo, Garbage Collection e utilizzo della CPU.
Database Mostra le prestazioni delle query del database. Esaminare le prestazioni per le query di database che usano ADO.NET o Entity Framework Core.
Utilizzo GPU Mostra l'utilizzo elevato dell'hardware dell'app Direct3D. Controllare se le prestazioni dell'app sono associate alla CPU o associate alla GPU.
Sequenza temporale applicazione Mostra le prestazioni dell'interfaccia utente per le app XAML. Esaminare le prestazioni dell'interfaccia utente nelle app XAML, ad esempio il tempo impiegato per il rendering dei fotogrammi.
IntelliTrace Strumento debugger che consente di registrare gli eventi ed esaminare lo stato dell'applicazione in vari punti di esecuzione. Si vuole che uno strumento esamini lo stato dell'applicazione in vari punti, non solo lo stato corrente dell'applicazione.

Quali strumenti sono supportati per il progetto?

La tabella seguente elenca i diversi strumenti offerti da Visual Studio e i diversi tipi di progetto che è possibile usare con:

Strumento di prestazioni .NET C/C++ UWP ASP.NET/ASP.NET Core
Uso di CPU yes yes
Utilizzo memoria yes yes
Allocazione di oggetti .NET yes no yes yes
Strumentazione yes yes
File I/O yes yes
PerfTips yes yes
Visualizzatore eventi yes yes
.NET Async yes no yes yes
Contatori .NET Sì (solo.NET Core/5+) no no Sì (solo ASP.NET Core)
Database Sì (solo.NET Core/5+) no no Sì (solo ASP.NET Core)
Utilizzo GPU yes no
Sequenza temporale applicazione Sì (XAML) no yes no
Esplora prestazioni no no no no
IntelliTrace Solo .NET con Visual Studio Enterprise no Solo .NET con Visual Studio Enterprise Solo .NET con Visual Studio Enterprise

Quali strumenti sono supportati in Linux?

Gli strumenti seguenti sono supportati con Linux come piattaforma di destinazione e Windows:

  • Utilizzo CPU
  • Rilevamento dell'allocazione di oggetti .NET
  • .NET Async
  • Contatori .NET
  • Visualizzatore eventi
  • Database

Informazioni su come usare i profiler

Gli articoli e i post di blog seguenti forniscono altre informazioni per imparare a usare in modo efficace gli strumenti per le prestazioni di Visual Studio.