Condividi tramite


Informazioni sui metodi di profilatura

Gli strumenti di profilatura di Microsoft Visual Studio Premium forniscono cinque metodi che è possibile utilizzare per raccogliere dati relativi alle prestazioni. In questo argomento vengono descritti i diversi metodi e vengono suggeriti alcuni scenari nei quali può risultare appropriata la raccolta di dati con un particolare metodo.

Metodo

Descrizione

Campionamento

Raccoglie dati statistici sul lavoro eseguito da un'applicazione.

Strumentazione

Raccoglie informazioni di intervallo dettagliate su ogni chiamata di funzione.

Concorrenza

Raccoglie informazioni dettagliate sulle applicazioni multi-threading.

Memoria .NET

Raccoglie informazioni dettagliate sull'allocazione di memoria .NET e sull'operazione di Garbage Collection.

Interazione tra livelli

Raccoglie informazioni sulle chiamate di funzione ADO.NET sincrone a un database SqlServer.

Mediante alcuni dei metodi di profilatura è inoltre possibile raccogliere dati aggiuntivi, ad esempio contatori di prestazioni di software e hardware. Per ulteriori informazioni, vedere Raccolta di dati aggiuntivi relativi alle prestazioni.

Campionamento

Il metodo di profilatura del campionamento raccoglie dati statistici sul lavoro eseguito da un'applicazione durante l'esecuzione di una profilatura. Il metodo di campionamento è leggero e ha un effetto limitato sull'esecuzione dei metodi dell'applicazione.

Il campionamento è il metodo predefinito degli strumenti di profilatura di Microsoft Visual Studio Premium. È utile nei casi seguenti:

  • Analisi iniziali delle prestazioni dell'applicazione.

  • Individuazione dei problemi di prestazioni che comportano l'utilizzo del processore (CPU).

Il metodo di profilatura del campionamento interrompe il processore del computer a intervalli definiti e raccoglie lo stack delle chiamate di funzione. l numeri dei campioni esclusivi vengono incrementati per la funzione in esecuzione, mentre i numeri di quelli inclusivi vengono incrementati per tutte le funzioni chiamanti nello stack di chiamate. I rapporti di campionamento presentano i totali di questi numeri per modulo, funzione, riga di codice sorgente e istruzione profilati.

Per impostazione predefinita, il profiler imposta l'intervallo di campionamento sui cicli della CPU. È possibile impostare il tipo di intervallo su un altro contatore di prestazioni della CPU e impostare il numero di eventi del contatore per l'intervallo. È inoltre possibile raccogliere dati sulla profilatura dell'interazione tra livelli (TIP) che forniscono informazioni sulle query eseguite su un database SQL Server tramite ADO.NET.

Raccolta di statistiche sulle prestazioni tramite il campionamento

Informazioni sui valori dei dati di campionamento negli strumenti di profilatura

Visualizzazioni dei dati del metodo di campionamento del profiler

Strumentazione

Il metodo di profilatura della strumentazione raccoglie dati di intervallo dettagliati per le chiamate di funzione in un'applicazione profilata. La profilatura della strumentazione è utile per i casi seguenti:

  • Individuazione di colli di bottiglia di input/output, ad esempio l'I/O del disco.

  • Analisi dettagliata di un particolare modulo o set di funzioni.

Il metodo di strumentazione inserisce codice in un file binario che acquisisce informazioni di intervallo per ogni funzione nel file instrumentato e ogni chiamata di funzione effettuata da tali funzioni. La strumentazione identifica inoltre quando una funzione effettua una chiamata al sistema operativo per richiedere operazioni quale la scrittura su un file. Nei rapporti di strumentazione vengono utilizzati quattro valori per rappresentare il tempo totale impiegato in una funzione o una riga di codice sorgente:

  • Inclusivo trascorso - Il tempo totale impiegato per eseguire la funzione o la riga di codice sorgente.

  • Inclusivo applicazione - Il tempo impiegato per eseguire la funzione o la riga di codice sorgente, tranne il tempo trascorso in chiamate al sistema operativo.

  • Esclusivo trascorso - Il tempo impiegato per eseguire il codice nel corpo della funzione o nella riga di codice sorgente. Il tempo impiegato per eseguire funzioni chiamate dalla funzione o dalla riga di codice sorgente è escluso.

  • Esclusivo applicazione - Il tempo impiegato per eseguire il codice nel corpo della funzione o nella riga di codice sorgente. Il tempo impiegato per eseguire chiamate al sistema operativo e il tempo impiegato per eseguire funzioni chiamate dalla funzione o dalla riga di codice sorgente sono esclusi.

È inoltre possibile raccogliere contatori delle prestazioni della CPU e del software tramite il metodo di strumentazione.

Informazioni sui valori dei dati di strumentazione negli strumenti di profilatura

Raccolta di dati di intervallo dettagliati tramite la strumentazione

Visualizzazioni dei dati del metodo di strumentazione del profiler

Concorrenza

La profilatura della concorrenza consente di raccogliere informazioni sulle applicazioni multithread. La profilatura dei conflitti di risorse consente di raccogliere informazioni dettagliate sullo stack di chiamate ogni volta che ai thread concorrenti viene imposto di attenere per l'accesso a una risorsa condivisa. La visualizzazione di concorrenza raccoglie inoltre informazioni più generali sul modo in cui l'applicazione multithread interagisce con se stessa, con l'hardware, con il sistema operativo e con altri processi nel computer host.

  • Nei rapporti sui conflitti di risorse viene visualizzato il numero complessivo di conflitti e il tempo totale di attesa di una risorsa per i moduli, le funzioni, le righe di codice sorgente e le istruzioni in cui si è verificata l'attesa. I grafici cronologia mostrano inoltre il momento in cui si sono verificati i conflitti.

  • La visualizzazione di concorrenza presenta informazioni grafiche che è possibile utilizzare per individuare colli di bottiglia delle prestazioni, un sottoutilizzo della CPU, un conflitto di thread, una migrazione di thread, ritardi di sincronizzazione, aree di I/O sovrapposte e altre informazioni. Quando possibile, l'output grafico viene collegato ai dati dello stack di chiamate e del codice sorgente. È possibile raccogliere i dati della visualizzazione di concorrenza solo per applicazioni da riga di comando e di Windows.

Informazioni sui valori dei dati su conflitti di risorse negli strumenti di profilatura

Raccolta di dati di concorrenza di thread e processi

Visualizzazioni dei dati su conflitti tra risorse

Visualizzatore di concorrenze

Memoria .NET

Il metodo di profilatura dell'allocazione di memoria .NET interrompe il processore del computer a ogni allocazione di un oggetto .NET Framework in un'applicazione profilata. Quando vengono raccolti dati sulla durata degli oggetti, il profiler interrompe il processore dopo ogni Garbage Collection di .NET Framework.

Il profiler raccoglie informazioni sul tipo, sulle dimensioni e sul numero di oggetti creati in un'allocazione o eliminati in modo permanente in un'operazione di Garbage Collection.

  • Quando si verifica un evento di allocazione, il profiler raccoglie informazioni aggiuntive sullo stack delle chiamate di funzione. l numeri di allocazione esclusiva vengono incrementati per la funzione attualmente in esecuzione, mentre i numeri di quelli inclusivi vengono incrementati per tutte le funzioni chiamanti nello stack di chiamate. I rapporti di .NET presentano i totali di questi numeri per tipi, moduli, funzioni, righe di codice sorgente e istruzioni profilati.

  • Quando si verifica un'operazione di Garbage Collection, il profiler raccoglie dati sugli oggetti eliminati e informazioni sugli oggetti in ogni generazione di Garbage Collection. Alla fine dell'esecuzione dell'analisi, il profiler registra dati sugli oggetti che non sono stati eliminati in modo esplicito. Nel rapporto Durata oggetti vengono visualizzati i totali per ogni tipo allocato nell'esecuzione della profilatura.

La profilatura di memoria .NET può essere utilizzata in modalità campionamento o strumentazione. La modalità selezionata non influisce sui rapporti Allocazione e Durata oggetti che sono specifici della profilatura della memoria .NET:

  • Quando si esegue la profilatura di memoria .NET in modalità di campionamento, il profiler.NET utilizza eventi di allocazione della memoria come intervallo e visualizza il numero di oggetti allocati e i byte totali allocati come valori inclusivi ed esclusivi nei rapporti.

  • Quando si esegue la profilatura della memoria .NET in modalità strumentazione, vengono raccolte informazioni di intervallo dettagliate insieme a tutti i valori di allocazione inclusivi ed esclusivi.

Informazioni sull'allocazione di memoria e sui valori dei dati di durata di un oggetto negli strumenti di profilatura

Raccolta di dati di durata e allocazione di memoria .NET

Visualizzazioni dei dati di memoria .NET degli strumenti di profilatura

Interazione tra livelli

La profilatura dell'interazione tra livelli inserisce informazioni in un file dei dati di profilatura relativo alle chiamate sincrone di ADO.NET tra una pagina di ASP.NET o un'altra applicazione e un database SQL Server. Nei dati sono inclusi il numero e l'ora delle chiamate e i tempi massimo e minimo. È possibile aggiungere dati di interazione tra livelli ai dati di profilatura raccolti con il metodo di campionamento, strumentazione, memoria .NET o concorrenza.

Dati di interazione tra livelli raccolti dagli strumenti di profilatura

Dati di profilo di interazione tra livelli

Procedura: raccogliere dati di interazione tra livelli

Visualizzazioni Interazioni tra livelli

Vedere anche

Attività

Procedura: profilare un sito Web o un'applicazione Web tramite la Creazione guidata sessione di prestazioni

Concetti

Guida per principianti alla profilatura delle prestazioni