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 La 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.
- Guida per principianti all'ottimizzazione del codice
- 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