Condividi tramite


Analisi dei dati relativi alle prestazioni per il codice Visual C++, Visual C# e Visual Basic nelle app di Windows Store

In questo argomento vengono illustrati i dati relativi alle prestazioni del codice Visual C++, Visual C# e Visual Basic presentato nelle visualizzazioni dei rapporti dello strumento di profilatura di Microsoft Visual Studio Express 2012 per Windows 8. Per raccogliere i dati relativi alle prestazioni di Visual C++, Visual C# e Visual Basic, vedi uno dei seguenti argomenti:

In questo argomento

Questo argomento contiene le seguenti sezioni:

Aprire il file di rapporto della profilatura

Tipi di dati delle prestazioni

Just My Code

Tipi di visualizzazioni dei rapporti di prestazioni

Visualizzazioni dei rapporti di prestazioni

  • Visualizzazione Riepilogo

  • Visualizza Dettagli funzione

  • Visualizzazione Albero delle chiamate

  • Visualizzazione Chiamante/chiamato

  • Visualizzazioni Moduli e Funzioni

  • Visualizzazione Righe

Personalizzare le visualizzazioni griglia dei dati

Aprire il file di rapporto della profilatura

Quando interrompi l'esecuzione di una profilatura dall'IDE di Visual Studio, i dati delle prestazioni vengono visualizzati automaticamente in un documento.

Per aprire un file di rapporto della profilatura (con estensione vspx) generato dallo strumento da riga di comando VSPerf o salvato dopo l'esecuzione di una profilatura precedente, procedi come indicato di seguito:

  1. Se necessario, apri Visual Studio.

  2. Scegli Apri file dal menu File.

  3. Nella finestra di dialogo Apri file passa alla cartella contenente il file di rapporto della profilatura, quindi scegli il file di rapporto.

Tipi di dati delle prestazioni

Il profiler di Visual Studio Express 2012 per Windows 8 utilizza una tecnica di campionatura per raccogliere i dati delle prestazioni per il codice Visual C++, Visual C# e Visual Basic. Secondo un intervallo basato sul clock del processore, il profiler acquisisce uno snapshot delle funzioni attualmente attive, corrispondenti allo stack di chiamate. Una funzione attiva nello stack di chiamate esegue il codice o attende le funzioni che dovrà eseguire. Per ogni funzione nello stack di chiamate campionate, il profiler assegna i valori di campionamento alla funzione come indicato di seguito:

  • Se la funzione esegue il codice nel proprio corpo (non in una funzione figlio), i conteggi dei campioni inclusivi ed esclusivi della funzione vengono incrementati.

  • Se la funzione è in attesa della restituzione di una funzione figlio, viene incrementato solo il conteggio dei campioni Inclusivi della funzione.

I dati di profilatura per una funzione includono il numero assoluto di campioni raccolti per la funzione e la percentuale relativa di tali campioni rispetto al numero totale di campioni raccolti durante l'esecuzione della profilatura. I dati sono calcolati per due set di valori di intervallo:

  • I valori inclusivi vengono calcolati dal numero totale di campioni raccolti per una funzione quando è nello stack di chiamate, compresi i campioni raccolti durante l'esecuzione delle funzioni figlio. Quando uno stack di chiamate campionate viene analizzato, i conteggi dei campioni inclusivi di tutte le funzioni nello stack di chiamate vengono incrementati.

  • I valori esclusivi vengono calcolati dal numero totale di campioni raccolti per una funzione quando esegue il proprio codice. I valori esclusivi non comprendono i campioni raccolti durante l'esecuzione delle funzioni figlio. Quando uno stack di chiamate campionate viene analizzato, il conteggio dei campioni esclusivi viene incrementato solo per la funzione che esegue il codice nel proprio corpo.

Tipi di visualizzazioni dei rapporti di prestazioni

Le visualizzazioni dei rapporti di profilatura presentano i dati in due modi:

  • Visualizzazioni del grafico chiamate: mostra le informazioni sulle funzioni nel contesto dei percorsi di esecuzione.

    • Albero del Percorso critico nella finestra di riepilogo: mostra il percorso di esecuzione per il maggior numero di campioni che hanno richiesto la maggior quantità di tempo nell'esecuzione della profilatura.

    • La visualizzazione Albero delle chiamate è un grafico delle chiamate per tutti i percorsi di esecuzione che sono stati campionati nell'esecuzione della profilatura.

    • Le visualizzazioni Dettagli funzione e Chiamante/chiamato si concentrano su una funzione selezionata, presentando le funzioni che hanno chiamato la funzione selezionata e le funzioni chiamate dalla funzione.

    Le visualizzazioni del grafico chiamate consentono di individuare i problemi di prestazioni negli algoritmi.

  • Visualizzazioni di elenchi di funzioni: presentano i dati delle prestazioni delle funzioni in una tabella. Puoi ordinare le funzioni scegliendo una colonna di dati.

    • L'elenco Funzioni con più lavoro individuale nella pagina di riepilogo mostra le funzioni con il maggior numero di campioni esclusivi raccolti nell'esecuzione della profilatura.

    • La visualizzazione Moduli raggruppa le funzioni in base al file dll o exe che le contiene.

    • La visualizzazione Funzioni è un unico elenco di funzioni.

    • La visualizzazione Righe include i dati relativi alle prestazioni per le istruzioni delle funzioni in esecuzione quando è stato raccolto un campione.

Puoi spostarti tra le visualizzazioni selezionando una funzione e scegliendo una nuova visualizzazione dall'elenco a discesa Visualizzazione corrente.

Just My Code

Per impostazione predefinita, il profiler utilizza la funzionalità Just My Code durante la creazione di rapporti. Quando il profiler analizza le informazioni sullo stack di chiamate, determina se una funzione nello stack di chiamate è un membro del tuo codice o del codice di sistema, ad esempio un metodo nella libreria di classi di base di .NET Framework. Quando Just My Code è abilitato e la funzione è una chiamata al codice di sistema, l'analisi del profiler aggiunge tutti i campioni successivi raccolti per lo stack di chiamate nei valori inclusivi ed esclusivi della prima chiamata di sistema. Le chiamate di sistema vengono quindi raggruppate nella prima chiamata di sistema, consentendoti di concentrarti sull'ottimizzazione del codice.

Per modificare il comportamento predefinito di Just My Code e visualizzare tutte le chiamate alle chiamate di sistema, procedi come indicato di seguito:

  1. Scegli Opzioni dal menu Strumenti.

  2. Nella finestra di dialogo Opzioni scegli Strumenti di prestazioni, quindi Generale.

  3. Nel gruppo Just My Code deseleziona la casella di controllo Abilita Just My Code per i rapporti del profiler (campionamento).

Visualizzazioni dei rapporti di prestazioni

La pagina Riepilogo fornisce due visualizzazioni dei dati di profilatura che spesso possono indicare i migliori candidati per l'ottimizzazione delle prestazioni.

  • L'albero Percorso critico mostra lo stack di chiamate con il maggior numero di campioni nell'esecuzione della profilatura. Comprendere il motivo per cui questo algoritmo richiede così tanto tempo può portare a un'ottimizzazione.

  • L'elenco Funzioni con più lavoro individuale presenta le dieci funzioni che hanno utilizzato il maggior tempo esclusivo. Puoi ottenere miglioramenti delle prestazioni rapidi e significativi ottimizzando il codice della funzione o riducendo il numero di chiamate di queste funzioni.

Per aprire una visualizzazione Dettagli funzione relativa alla funzione, scegli il nome della funzione nella visualizzazione Riepilogo.

Hh780914.collapse_all(it-it,VS.110).gifVisualizza Dettagli funzione

Il grafico a barre Distribuzione costi rappresenta le relazioni tra una funzione selezionata e le funzioni chiamanti che hanno eseguito la funzione selezionata e tra la funzione selezionata e le funzioni che ha chiamato.

  • Sulla barra Funzioni chiamanti sono visualizzate le funzioni che hanno chiamato la funzione selezionata. La dimensione di un blocco di funzioni chiamanti indica la percentuale di tempo di esecuzione totale della funzione selezionata causata dalla funzione chiamante.

  • La barra Funzione selezionata indica la quantità relativa del tempo di esecuzione totale impiegato dalla funzione selezionata per l'esecuzione del proprio codice, il blocco Corpo funzione, e la quantità di tempo impiegata per l'esecuzione delle funzioni chiamate dalla funzione selezionata.

  • Sulla barra Funzioni chiamate sono visualizzate le funzioni chiamate dalla funzione selezionata. La dimensione di un blocco di funzioni chiamate indica la percentuale di tempo di esecuzione totale della funzione chiamata impiegato nella funzione chiamata.

Puoi scegliere una funzione chiamante o chiamata da utilizzare come funzione selezionata.

Hh780914.collapse_all(it-it,VS.110).gifVisualizzazione Albero delle chiamate

Puoi usare la visualizzazione Albero delle chiamate per esplorare i percorsi di esecuzione della funzione utilizzati nella tua app. La radice dell'albero è il punto di ingresso nell'app. Per ogni nodo della funzione vengono elencate tutte le funzioni chiamate e i dati delle prestazioni delle relative chiamate di funzione. I valori delle funzioni nella visualizzazione Albero delle chiamate sono relativi alle istanze della funzione chiamate dalla funzione padre nell'albero delle chiamate. I valori percentuali sono il rapporto del periodo del valore delle istanze della funzione con il tempo di esecuzione totale della profilatura.

Per concentrarti su un nodo della visualizzazione Albero delle chiamate, seleziona il nodo, quindi scegli Imposta radice dal menu di scelta rapida. Quando imposti il nodo radice, elimini dalla visualizzazione tutte le altre voci ad eccezione del sottoalbero del nodo selezionato. Per reimpostare il nodo radice sul nodo originale, sceglie Reimposta radice dal menu di scelta rapida.

Colonne della visualizzazione Albero delle chiamate

Nome colonna

Descrizione

Campioni inclusivi

Numero dei campioni raccolti per le istanze della funzione chiamate dalla funzione padre nell'albero delle chiamate. Nel numero di campioni sono inclusi quelli raccolti per le funzioni chiamate dalla funzione.

Campioni esclusivi

Numero dei campioni raccolti per le istanze della funzione chiamate dalla funzione padre nell'albero delle chiamate. Nel numero di campioni non sono inclusi quelli raccolti per le funzioni chiamate dalla funzione.

% campioni inclusivi

Percentuale del numero totale di campioni raccolti nell'esecuzione della profilatura, che sono stati raccolti per le istanze della funzione chiamate dalla funzione padre. Il valore include i campioni raccolti per le funzioni chiamate dalla funzione.

% campioni esclusivi

Percentuale del numero totale di campioni raccolti nell'esecuzione della profilatura, che sono stati raccolti per le istanze della funzione chiamate dalla funzione padre. Il valore non include i campioni raccolti per le funzioni chiamate dalla funzione.

Nome modulo

Nome del modulo (con estensione dll o exe) che contiene la funzione.

Hh780914.collapse_all(it-it,VS.110).gifVisualizzazione Chiamante/chiamato

La visualizzazione Chiamante/chiamato è una rappresentazione albero dei dati del grafico a barre Distribuzione costi dettagli funzione che include tutti i dettagli dell'intervallo. Puoi usare la visualizzazione Chiamante/chiamato per esaminare la relazione tra una funzione selezionata e le funzioni che l'hanno la chiamata e la funzione che ha chiamato. La visualizzazione Chiamante/chiamato è costituita da tre griglie.

Nella griglia centrale, Funzione corrente mostra le informazioni di profilatura sulla funzione selezionata. I valori includono i campioni da tutte le chiamate alla funzione. I valori di Funzioni che hanno chiamato la funzione corrente sono visualizzati nella griglia superiore, mentre i valori di Funzioni che sono state chiamate dalla funzione corrente sono visualizzati nella griglia inferiore. I valori della funzione corrente sono i totali di tutte le chiamate alla funzione campionate. I valori delle funzioni chiamanti e chiamate includono solo i campioni raccolti per la funzione quando ha chiamato o è stata chiamata dalla funzione selezionata.

Per esplorare l'albero delle chiamate di una funzione, fai doppio clic su una funzione chiamante o chiamata. In questo modo la funzione selezionata sarà la nuova funzione selezionata e potrai visualizzare le relative funzioni chiamanti e chiamate.

Colonne della visualizzazione Chiamante/chiamato

Nome colonna

Descrizione

Campioni inclusivi

  • Per la funzione selezionata, il numero totale di campioni raccolti per la funzione selezionata. Il valore include i campioni raccolti per le funzioni chiamate dalla funzione selezionata.

  • Per una funzione chiamante, numero di campioni raccolti nell'esecuzione della profilatura per le istanze della funzione chiamante che ha chiamato la funzione selezionata. Il valore include i campioni raccolti per le funzioni chiamate dalla funzione chiamante.

  • Per una funzione chiamata, numero di campioni raccolti nell'esecuzione della profilatura per le istanze della funzione chiamata che è stata chiamata dalla funzione selezionata. Il valore include i campioni raccolti per le funzioni chiamate dalla funzione chiamata.

Campioni esclusivi

  • Per la funzione selezionata, il numero totale di campioni raccolti per la funzione selezionata. Il valore non include i campioni raccolti per le funzioni chiamate dalla funzione selezionata.

  • Per una funzione chiamante, numero di campioni raccolti nell'esecuzione della profilatura per le istanze della funzione chiamante che ha chiamato la funzione selezionata. Il valore non include i campioni raccolti per le funzioni chiamate dalla funzione chiamante.

  • Per una funzione chiamata, numero di campioni raccolti nell'esecuzione della profilatura per le istanze della funzione chiamata che è stata chiamata dalla funzione selezionata. Il valore non include i campioni raccolti per le funzioni chiamate dalla funzione chiamata.

% campioni inclusivi

  • Per la funzione selezionata, percentuale del numero totale di campioni raccolti nell'esecuzione della profilatura per la funzione selezionata. Il valore include i campioni raccolti per le funzioni chiamate dalla funzione selezionata.

  • Per una funzione chiamante, percentuale del numero totale di campioni raccolti nell'esecuzione della profilatura per le istanze della funzione chiamante che ha chiamato la funzione selezionata. Il valore include i campioni raccolti per le funzioni chiamate dalla funzione chiamante.

  • Per una funzione chiamata, percentuale del numero totale di campioni raccolti nell'esecuzione della profilatura per le istanze della funzione chiamata che è stata chiamata dalla funzione selezionata. Il valore include i campioni raccolti per le funzioni chiamate dalla funzione chiamata.

% campioni esclusivi

  • Per la funzione selezionata, percentuale del numero totale di campioni raccolti nell'esecuzione della profilatura per la funzione selezionata. Il valore non include i campioni raccolti per le funzioni chiamate dalla funzione selezionata.

  • Per una funzione chiamante, percentuale del numero totale di campioni raccolti nell'esecuzione della profilatura per le istanze della funzione chiamante che ha chiamato la funzione selezionata. Il valore non include i campioni raccolti per le funzioni chiamate dalla funzione chiamante.

  • Per una funzione chiamata, percentuale del numero totale di campioni raccolti nell'esecuzione della profilatura per le istanze della funzione chiamata che è stata chiamata dalla funzione selezionata. Il valore non include i campioni raccolti per le funzioni chiamate dalla funzione chiamata.

Hh780914.collapse_all(it-it,VS.110).gifVisualizzazioni Moduli e Funzioni

Le visualizzazioni Moduli e Funzioni presentano i dettagli dei dati di profilatura per le funzioni nel rapporto di profilatura. La visualizzazione Moduli organizza le funzioni JavaScript in base al file di origine JS che le contiene. Altre funzioni sono elencate in base al modulo, ad esempio una DLL. La visualizzazione Funzioni elenca tutte le funzioni senza utilizzare una gerarchia. Individuare il tuo codice personalizzato nella visualizzazione Moduli è spesso più facile rispetto alla visualizzazione Funzioni. Potrebbe tuttavia risultare più facile confrontare le funzioni nella visualizzazione Funzioni.

Colonne delle visualizzazioni Moduli e Funzioni

Nome colonna

Descrizione

Campioni inclusivi

Numero di campioni raccolti quando la funzione si trovata nello stack di chiamate. Nel numero di campioni sono inclusi quelli raccolti per le funzioni chiamate dalla funzione.

Campioni esclusivi

Numero di campioni raccolti mentre la funzione eseguiva il proprio codice. In Campioni esclusivi non sono compresi i campioni raccolti durante l'esecuzione delle funzioni chiamate dalla funzione.

% campioni inclusivi

Percentuale del numero totale di campioni raccolti nell'esecuzione della profilatura quando la funzione si trovata nello stack di chiamate.

Il numeratore è il valore di Campioni inclusivi della funzione.

Il denominatore è il numero totale di campioni raccolti per l'esecuzione della profilatura.

% campioni esclusivi

Percentuale del numero totale di campioni raccolti nell'esecuzione della profilatura per la funzione. Il valore non include i campioni raccolti per le funzioni chiamate dalla funzione.

Hh780914.collapse_all(it-it,VS.110).gifVisualizzazione Righe

Nella visualizzazione Righe dei dati di campionamento sono elencati i dati delle prestazioni per le istruzioni eseguite durante la raccolta dei campioni nell'esecuzione della profilatura. In un file di origine un'istruzione può occupare più di una riga in un file di origine e una singola riga può includere più di un'istruzione.

Nome colonna

Descrizione

Campioni inclusivi

Numero di campioni raccolti per la riga nell'esecuzione della profilatura. Nel numero di campioni sono inclusi quelli raccolti per le funzioni chiamate dalla riga.

Campioni esclusivi

Numero di campioni raccolti per la riga nell'esecuzione della profilatura. Nel numero di campioni non sono inclusi quelli raccolti per le funzioni chiamate dalla riga.

% campioni inclusivi

Percentuale del numero totale di campioni raccolti nell'esecuzione della profilatura per la riga. Il valore include i campioni raccolti per le funzioni chiamate dalla riga.

% campioni esclusivi

Percentuale del numero totale di campioni raccolti nell'esecuzione della profilatura per la riga. Il valore non include i campioni raccolti per le funzioni chiamate dalla riga.

Inizio riga di origine

Numero di riga iniziale nel file di origine in corrispondenza del quale è stato raccolto il campione.

Inizio carattere di origine

Offset del carattere iniziale nel file di origine in corrispondenza del quale è stato raccolto il campione.

Fine riga di origine

Numero di riga finale nel file di origine in corrispondenza del quale è stato raccolto il campione.

Fine carattere di origine

Offset del carattere finale nel file di origine in corrispondenza del quale è stato raccolto il campione.

Personalizzare le visualizzazioni griglia dei dati

Puoi aggiungere o rimuovere colonne di dati e modificare l'ordine in cui sono visualizzate le colonne. Apri il menu di scelta rapida per una riga di intestazione della tabella e scegli Aggiungi/Rimuovi colonne. Seleziona le caselle di controllo delle colonne che desideri visualizzare e deseleziona quelle delle colonne che vuoi nascondere. Usa i pulsanti freccia per spostare una colonna selezionata.

Ulteriori colonne dei dati di profilatura

Nome colonna

Descrizione

Indirizzo funzione

Indirizzo di memoria della funzione.

Numero riga funzione

Numero di riga dell'inizio di questa funzione nel file di origine.

File di origine

File di origine che contiene la definizione per questa funzione.

Nome modulo

Nome del modulo che contiene la funzione.

Percorso modulo

Percorso del modulo che contiene la funzione.

ID processo

ID di processo (PID) dell'esecuzione della profilatura.

Nome processo

Nome del processo.