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 | sì | sì | yes |
Utilizzo memoria | yes | sì | sì | yes |
Allocazione di oggetti .NET | yes | no | yes | yes |
Strumentazione | yes | sì | sì | yes |
File I/O | yes | sì | sì | yes |
PerfTips | yes | sì | sì | yes |
Visualizzatore eventi | yes | sì | sì | 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 | sì | sì | 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.
- Case study: Guida per principianti all'ottimizzazione del codice
- Case study: Isolare un problema di prestazioni
- Miglioramento delle prestazioni di Visual Studio con il nuovo strumento di strumentazione
- Case study: Prestazioni doppie in meno di 30 minuti