Guida introduttiva: Presentazione degli strumenti di profilaturaQuickstart: First look at profiling tools

Visual Studio offre un'ampia gamma di strumenti di profilatura che consentono di diagnosticare diversi tipi di problemi di prestazioni in base al tipo di app.Visual Studio provides a variety of profiling tools to help you diagnose different kinds of performance issues depending on your app type.

Gli strumenti di profilatura a cui è possibile accedere durante una sessione di debug sono disponibili nella finestra Strumenti di diagnostica.The profiling tools that you can access during a debugging session are available in the Diagnostic Tools window. La finestra Strumenti di diagnostica viene visualizzata automaticamente, a meno che non sia stata disattivata.The Diagnostic Tools window appears automatically unless you have turned it off. Per visualizzare la finestra, fare clic su Debug/Windows/Mostra strumenti di diagnostica.To bring up the window, click Debug / Windows / Show Diagnostic Tools. Con finestra aperta è possibile selezionare gli strumenti per cui si vogliono raccogliere dati.With the window open, you can select tools for which you want to collect data.

Finestra Strumenti di diagnosticaDiagnostic Tools window

Durante il debug è possibile usare la finestra Strumenti di diagnostica per l'analisi della CPU e dell'uso della memoria e si possono visualizzare gli eventi che generano informazioni relative alle prestazioni.While you are debugging, you can use the Diagnostic Tools window to analyze CPU and memory usage, and you can view events that show performance-related information.

Visualizzazione di riepilogo di Strumenti diagnosticiDiagnostic Tools Summary view

La finestra Strumenti di diagnostica è spesso il modo migliore per profilare le app, ma per le build di versione è anche possibile effettuare un'analisi dopo che l'app è terminata.The Diagnostic Tools window is often the preferred way to profile apps, but for Release builds you can also do a post-mortem analysis of your app instead. Per altre informazioni sui diversi approcci, vedere Eseguire gli strumenti di profilatura con o senza il debugger.If you want more information on different approaches, see Run profiling tools with or without the debugger. Per informazioni sugli strumenti di profilatura supportati per i diversi tipi di app, vedere Quale strumento si deve usare?.To see profiling tool support for different app types, see Which tool should I use?.

Note

È possibile usare gli strumenti di valutazione finale con Windows 7 e versioni successive.You can use the post-mortem tools with Windows 7 and later. Per Windows 8 e versioni successive è necessario eseguire gli strumenti di profilatura con il debugger, nella finestra Strumenti di diagnostica.Windows 8 and later is required to run profiling tools with the debugger (Diagnostic Tools window).

Analizzare l'utilizzo della CPUAnalyze CPU Usage

L'uso dello strumento Utilizzo CPU è consigliabile per iniziare ad analizzare le prestazioni dell'applicazione.The CPU Usage tool is a good place to start analyzing your app's performance. Lo strumento offre maggiori informazioni sulle risorse della CPU consumate dall'applicazione.It will tell you more about CPU resources that your app is consuming. Per una descrizione più dettagliata dello strumento Utilizzo CPU, vedere la Guida per principianti alla profilatura delle prestazioni.For a more detailed walkthrough of the CPU Usage tool, see Beginner's guide to performance profiling.

Dalla visualizzazione Riepilogo di Strumenti di diagnostica scegliere Abilita profilatura CPU (è necessario essere in una sessione di debug).From the Summary view of the Diagnostic Tools, choose Enable CPU Profiling (you must be in a debugging session).

Abilita profilatura CPU in Strumenti di diagnosticaEnable CPU usage in the Diagnostic Tools

Per usare lo strumento in modo più efficace, impostare due punti di interruzione nel codice, uno all'inizio e alla fine della funzione o dell'area di codice che si vuole analizzare.To use the tool most effectively, set two breakpoints in your code, one at the beginning and one at the end of the function or the region of code you want to analyze. Esaminare i dati di profilatura durante la pausa in corrispondenza del secondo punto di interruzione.Examine the profiling data when you are paused at the second breakpoint.

La visualizzazione Utilizzo CPU contiene un elenco di funzioni ordinate in base a quelle in esecuzione da tempo, con la funzione di maggior durata in cima all'elenco.The CPU Usage view shows you a list of functions ordered by longest running, with the longest running function at the top. In questo modo è possibile sapere quali sono le funzioni in cui si verificano colli di bottiglia delle prestazioni.This can help guide you to functions where performance bottlenecks are happening.

Visualizzazione Utilizzo CPU in Strumenti di diagnosticaDiagnostic Tools CPU Usage view

Fare doppio clic su una funzione a cui si è interessati per aprire una visualizzazione più dettagliata a tre riquadri in modalità "farfalla", con la funzione selezionata al centro della finestra, la funzione chiamante a sinistra e le funzioni chiamate a destra.Double-click on a function that you are interested in, and you will see a more detailed three-pane "butterfly" view, with the selected function in the middle of the window, the calling function on the left, and called functions on the right. La sezione Corpo funzione indica la quantità totale di tempo (e la percentuale di tempo) impiegata nel corpo della funzione, escluso il tempo dedicato alle funzioni chiamanti e chiamate.The Function Body section shows the total amount of time (and the percentage of time) spent in the function body excluding time spent in calling and called functions. Questi dati consentono di valutare se la funzione stessa è un collo di bottiglia delle prestazioni.This data can help you evaluate whether the function itself is a performance bottleneck.

Visualizzazione in modalità "farfalla" delle funzioni chiamanti e chiamate in Strumenti di diagnosticaDiagnostic Tools caller callee "butterfly" view

Analizzare l'utilizzo della memoriaAnalyze memory usage

La finestra Strumenti di diagnostica consente anche di valutare l'uso della memoria nell'app.The Diagnostic Tools window also allows you to evaluate memory usage in your app. Ad esempio, è possibile esaminare il numero e le dimensioni degli oggetti nell'heap.For example, you can look at the number and size of objects on the heap. Per istruzioni più dettagliate su come analizzare la memoria, vedere Analizzare l'uso della memoria.For more detailed instructions to analyze memory, see Analyze memory usage.

Per analizzare l'uso della memoria, è necessario creare almeno uno snapshot della memoria durante il debug.To analyze memory usage, you need to take at least one memory snapshot while you are debugging. Spesso, il modo migliore per analizzare la memoria consiste nel creare due snapshot: il primo immediatamente prima di un sospetto problema di memoria e il secondo subito dopo che si è verificato un sospetto problema di memoria.Often, the best way to analyze memory is to take two snapshots; the first right before a suspected memory issue, and the second snapshot right after a suspected memory issue occurs. È quindi possibile confrontare i due snapshot in una visualizzazione differenziale e vedere esattamente che cosa è cambiato.Then you can view a diff of the two snapshots and see exactly what changed.

Creazione di uno snapshot in Strumenti di diagnosticaTake a snapshot in the Diagnostic Tools

Quando si seleziona uno dei collegamenti con la freccia appare una visualizzazione differenziale dell'heap (una freccia rossa verso l'alto Aumento utilizzo memoria indica un numero di oggetti in aumento (sinistra) o dimensioni dell'heap in aumento (destra)).When you select one of the arrow links, you are given a differential view of the heap (a red up arrow Memory Usage Increase shows an increasing object count (left) or an increasing heap size (right)). Se si sceglie il collegamento a destra, si ottiene una visualizzazione differenziale dell'heap ordinata in base agli oggetti che hanno contribuito di più all'aumento delle dimensioni dell'heap.If you click the right link, you get a differential heap view ordered by objects that increased the most in heap size. Ciò consente di individuare i problemi di memoria.This can help you pinpoint memory problems. Ad esempio, nell'illustrazione riportata di seguito, i byte usati dagli oggetti ClassHandlersStore sono aumentati di 3.492 byte nel secondo snapshot.For example, in the illustration below, the bytes used by ClassHandlersStore objects increased by 3,492 bytes in the second snapshot.

Visualizzazione differenziale dell'heap in Strumenti di diagnosticaDiagnostic Tools heap diff view

Se invece si fa clic sul collegamento a sinistra nella visualizzazione Utilizzo memoria, la visualizzazione dell'heap è organizzata in base al numero di oggetti. Gli oggetti di un tipo particolare il cui numero è aumentato maggiormente appaiono in cima all'elenco (ordinati in base alla colonna Diff. conteggio).If you click the link on the left instead in the Memory Usage view, the heap view is organized by object count; the objects of a particular type that increased the most in number are shown at the top (sorted by Count Diff column).

Esaminare gli eventi prestazioniExamine performance events

La visualizzazione Eventi in Strumenti di diagnostica consente di visualizzare diversi eventi che si verificano durante il debug, ad esempio l'impostazione di un punto di interruzione o un'operazione di esecuzione del codice.The Events view in the Diagnostic Tools shows you different events that occur while you are debugging, such as the setting of a breakpoint or a code stepping operation. È possibile verificare informazioni quali la durata dell'evento, misurata da quando il debugger è stato messo pausa l'ultima volta o quando è stata avviata l'applicazione.You can check information such as the duration of the event (measured from when the debugger was last paused, or when the app started). Ad esempio, se ci si sposta nel codice (F10, F11), la visualizzazione Eventi indica la durata del runtime dell'applicazione dall'operazione del passaggio precedente al passaggio corrente.For example, if you step through code (F10, F11), the Events view shows you the app runtime duration from the previous step operation to the current step.

Visualizzazione degli eventi in Strumenti di diagnosticaDiagnostic Tools Events view

Note

Gli utenti di Visual Studio Enterprise possono visualizzare anche gli eventi IntelliTrace in questa scheda.If you have Visual Studio Enterprise, you can also see IntelliTrace events in this tab.

Gli stessi eventi sono visualizzati anche nell'editor di codice, che è possibile visualizzare come PerfTips.The same events also show up in the code editor, which you can view as PerfTips.

Panoramica profilatura PerfTipsProfiling Tour PerfTips

Esaminare le prestazioni dell'interfaccia utente e gli eventi di accessibilità (piattaforma UWP)Examine UI performance and accessibility events (UWP)

Nelle app della piattaforma UWP è possibile abilitare l'analisi dell'interfaccia utente nella finestra Strumenti di diagnostica.In your UWP apps, you can enable UI Analysis in the Diagnostic Tools window. Lo strumento cerca i comuni problemi di prestazioni o accessibilità e li indica nella visualizzazione Eventi durante il debug.The tool searches for common performance or accessibility issues and displays them in the Events view while you are debugging. Le descrizioni degli eventi contengono informazioni che possono essere utili per risolvere i problemi.The event descriptions provide information that can help resolve issues.

Visualizzare gli eventi di analisi dell'interfaccia utente negli strumenti di diagnosticaView UI analysis events in the diagnostic tools

Profilare build di rilascio senza il debuggerProfile release builds without the debugger

Gli strumenti di profilatura come Utilizzo CPU e Utilizzo memoria possono essere usati con il debugger (vedere le sezioni precedenti) oppure è possibile eseguire gli strumenti di profilatura per la relazione finale con il profiler delle prestazioni, progettato per l'analisi delle build di rilascio.Profiling tools like CPU Usage and Memory Usage can be used with the debugger (see earlier sections), or you can run profiling tools post-mortem using the Performance Profiler, which is intended to provide analysis for Release builds. Nel profiler delle prestazioni è possibile raccogliere informazioni di diagnostica durante l'esecuzione dell'applicazione e quindi esaminare le informazioni raccolte dopo l'interruzione dell'applicazione.In the Performance Profiler, you can collect diagnostic info while the app is running, and then examine the collected information after the app is stopped. Per altre informazioni sui diversi approcci, vedere Eseguire gli strumenti di profilatura con o senza il debugger.For more information on these different approaches, see Run profiling tools with or without the debugger.

Profiler delle prestazioniPerformance Profiler

Aprire il profiler delle prestazioni scegliendo Debug > Profiler prestazioni.Open the Performance Profiler by choosing Debug > Performance Profiler.

La finestra consente di selezionare più strumenti di profilatura in alcuni scenari.The window will allow you to select multiple profiling tools in some scenarios. Gli strumenti come Utilizzo CPU possono visualizzare dati complementari che agevolano l'analisi.Tools such as CPU Usage may provide complementary data that you can use to help in your analysis.

Analizzare l'uso di risorse (XAML)Analyze resource consumption (XAML)

Nelle app XAML, ad esempio le app WPF desktop di Windows e le app UWP, è possibile analizzare il consumo di risorse usando lo strumento Sequenza temporale applicazione.In XAML apps, such as Windows desktop WPF apps and UWP apps, you can analyze resource consumption using the Application Timeline tool. È possibile ad esempio analizzare il tempo impiegato dall'applicazione per preparare i frame dell'interfaccia utente (layout e rendering), per soddisfare le richieste di rete e disco e in scenari come l'avvio dell'applicazione, il caricamento delle pagine e il ridimensionamento di Windows.For example, you can analyze the time spent by your application preparing UI frames (layout and render), servicing network and disk requests, and in scenarios like application startup, page load, and Window resize. Per usare lo strumento, scegliere Sequenza temporale dell'applicazione nel profiler delle prestazioni e quindi scegliere Inizia.To use the tool, choose Application Timeline in the Performance Profiler, and then choose Start. Nell'applicazione seguire lo scenario con un sospetto problema di consumo delle risorse e quindi scegliere Arresta raccolta per generare il report.In your app, go through the scenario with a suspected resource consumption issue, and then choose Stop collection to generate the report.

I framerate ridotti nel grafico della velocità effettiva degli elementi visivi possono corrispondere a problemi di visualizzazione che si riscontrano quando si esegue l'applicazione.Low framerates in the Visual throughput graph may correspond to visual problems that you see when running your app. Analogamente, i numeri elevati nell'utilizzo dei thread di interfaccia utente possono corrispondere a problemi di velocità di risposta dell'interfaccia utente.Similarly, high numbers in the UI thread utilization graph may also correspond to UI responsiveness issues. Nel report è possibile selezionare un periodo di tempo con un sospetto problema di prestazioni e quindi esaminare in dettaglio le attività del thread dell'interfaccia utente nella visualizzazione Dettagli sequenza temporale (riquadro inferiore).In the report, you can select a time period with a suspected performance issue, and then examine the detailed UI thread activities in the Timeline details view (lower pane).

Strumento di profilatura Sequenza temporale applicazioneApplication Timeline profiling tool

Nella visualizzazione Dettagli sequenza temporale è possibile trovare informazioni quali il tipo di attività (o elemento dell'interfaccia utente interessato) e la durata dell'attività.In the Timeline details view, you can find information such as the type of activitiy (or the UI element involved) along with the duration of the activity. Ad esempio, nella figura un evento Layout per un controllo Grid impiega 57,53 ms.For example, in the illustration, a Layout event for a Grid control takes 57.53 ms.

Per altre informazioni, vedere Sequenza temporale dell'applicazione.For more information, see Application Timeline.

Analizzare l'uso della GPU (Direct3D)Analyze GPU Usage (Direct3D)

Nelle applicazioni Direct3D (i componenti Direct3D devono essere in C++) è possibile esaminare l'attività sulla GPU e analizzare i problemi di prestazioni.In Direct3D apps (Direct3D components must be in C++), you can examine activity on the GPU and analyze performance issues. Per altre informazioni, vedere l'articolo relativo all'uso della GPU.For more information, see GPU Usage. Per usare lo strumento, scegliere Utilizzo GPU nel profiler delle prestazioni e quindi scegliere Inizia.To use the tool, choose GPU Usage in the Performance Profiler, and then choose Start. Nell'applicazione seguire lo scenario che interessa per la profilatura e quindi scegliere Arresta raccolta per generare un report.In your app, go through the scenario that you're interested in profiling, and then choose Stop collection to generate a report.

Quando si seleziona un periodo di tempo nei grafici e si sceglie Visualizza dettagli, appare una visualizzazione dettagliata nel riquadro inferiore.When you select a time period in the graphs and choose view details, a detailed view appears in the lower pane. Nella visualizzazione dettagliata è possibile esaminare l'entità dell'attività in corso in ogni CPU e GPU.In the detailed view, you can examine how much activity is happening on each CPU and GPU. Selezionare gli eventi nel riquadro inferiore per ottenere i popup nella sequenza temporale.Select events in the lowest pane to get popups in the timeline. Ad esempio, selezionare l'evento Present per visualizzare i popup delle chiamate presenti.For example, select the Present event to view Present call popups. Le linee verticali grigio chiaro di vsync possono essere usate come riferimento per capire se per determinate chiamate presenti non è stato eseguito il vsync.(The light gray vertical Vsync lines can be used as a reference to understand whether certain Present calls missed Vsync. Deve esistere una chiamata presente tra ogni due vsync affinché l'applicazione esegua costantemente 60 FPS.There must be one Present call between every two Vsyncs in order for the app to steadily hit 60 FPS.)

Strumento di profilatura Utilizzo GPUGPU Usage profiling tool

È anche possibile usare i grafici per determinare se esistono colli di bottiglia delle prestazioni associati alla CPU o GPU.You can also use the graphs to determine whether there are CPU bound or GPU bound performance bottlenecks.

Analizzare le prestazioni (JavaScript UWP)Analyze performance (JavaScript UWP)

Per le app UWP è possibile usare lo strumento Memoria JavaScript e lo strumento Velocità di risposta interfaccia utente HTML.For UWP apps, you can use the JavaScript Memory tool and the HTML UI Responsiveness tool.

Lo strumento Memoria JavaScript è simile allo strumento Utilizzo memoria disponibile per altri tipi di applicazioni.The JavaScript Memory tool is similar to the Memory Usage tool available for other app types. È possibile usare questo strumento per comprendere in che modo viene usata la memoria e individuare le perdite di memoria nell'applicazione.You can use this tool to understand memory usage and find memory leaks in your app. Per maggiori dettagli sullo strumento, vedere Memoria JavaScript.For more details about the tool, see JavaScript Memory.

Strumento di profilatura Memoria JavaScriptJavaScript Memory profiling tool

Per diagnosticare la velocità di risposta dell'interfaccia utente, i tempi di caricamento lenti e gli aggiornamenti visivi lenti nelle app UWP, usare lo strumento Velocità di risposta interfaccia utente HTML.To diagnose UI responsiveness, slow loading time, and slow visual updates in UWP apps, use the HTML UI Responsiveness tool. L'uso è simile a quello dello strumento Sequenza temporale dell'applicazione per altri tipi di applicazioni.Usage is similar to the Application Timeline tool for other app types. Per altre informazioni, vedere Velocità di risposta dell'interfaccia utente HTML.For more information, see HTML UI responsiveness.

Strumento di profilatura Velocità di risposta interfaccia utente HTMLHTML UI Responsiveness profiling tool

Analizzare l'uso della rete (piattaforma UWP)Analyze network usage (UWP)

Nelle app UWP è possibile analizzare le operazioni di rete eseguite con l'API Windows.Web.Http. Questo strumento può aiutare a risolvere i problemi relativi ad autenticazione e accesso, all'uso non corretto della cache e alle prestazioni insufficienti di visualizzazione download.In UWP apps, you can analyze network operations performed using the Windows.Web.Http API.This tool may help you to resolve issues like access and authentication problems, incorrect cache-use, and poor display and download performance. Per usare lo strumento, scegliere Rete nel profiler delle prestazioni e quindi scegliere Inizia.To use the tool, choose Network in the Performance Profiler, and then choose Start. Nell'applicazione seguire lo scenario che usa Windows.Web.Http e quindi scegliere Arresta raccolta per generare il report.In your app, go through the scenario that uses Windows.Web.Http, and then choose Stop collection to generate the report.

Strumento di profilatura ReteNetwork Usage profiling tool

Selezionare un'operazione nella visualizzazione di riepilogo per visualizzare altri dettagli.Select an operation in the summary view to view more details.

Informazioni dettagliate nello strumento ReteDetailed information in the Network Usage tool

Per altre informazioni, vedere Utilizzo della rete.For more information, see Network Usage.

Analizzare le prestazioni (strumenti legacy)Analyze performance (legacy tools)

Se sono necessarie funzionalità, ad esempio la strumentazione, che non sono attualmente presenti negli strumenti Utilizzo CPU o Utilizzo memoria e si eseguono applicazioni desktop o ASP.NET, è possibile usare Esplora prestazioni per la profilatura.If you need features such as instrumentation that are not currently present in CPU Usage or Memory Usage tools, and you are running desktop or ASP.NET apps, you can use the Performance Explorer for profiling. Lo strumento non è supportato nelle app UWP.(Not supported in UWP apps). Per altre informazioni, vedere Esplora prestazioni.For more info, see Performance Explorer.

Strumento Esplora prestazioniPerformance Explorer tool

Quale strumento si deve usare?Which tool should I use?

Nella tabella seguente sono riportati i diversi strumenti offerti da Visual Studio e i diversi tipi di progetto con cui possono essere usati:Here is a table that lists the different tools Visual Studio offers and the different project types you can use them with:

Strumento di prestazioniPerformance Tool Desktop di WindowsWindows desktop UWPUWP ASP.NET/ASP.NET CoreASP.NET/ASP.NET Core
Utilizzo CPUCPU Usage yes yes yes
Utilizzo memoriaMemory Usage yes yes yes
Utilizzo GPUGPU Usage yes yes Nono
Sequenza temporale applicazioneApplication Timeline yes yes Nono
PerfTipsPerfTips yes Sì per XAML, no per HTMLyes for XAML, no for HTML yes
Esplora prestazioniPerformance Explorer yes Nono yes
IntelliTraceIntelliTrace Solo .NET con Visual Studio Enterprise.NET with Visual Studio Enterprise only Solo .NET con Visual Studio Enterprise.NET with Visual Studio Enterprise only Solo .NET con Visual Studio Enterprise.NET with Visual Studio Enterprise only
Utilizzo della reteNetwork Usage Nono yes Nono
HTML UI responsivenessHTML UI responsiveness Nono Sì per HTML, no per XAMLyes for HTML, no for XAML Nono
Memoria JavaScriptJavaScript Memory Nono Sì per HTML, no per XAMLyes for HTML, no for XAML Nono

Vedere ancheSee also