3. INTRODUZIONE
Let developers measure, evaluate, and target performance-related issues in their
code
–CPU, Memory, Concurrency, ADO.NET…
•Command-line tools but fully integrated into the IDE
•Since VS 2012, available in Pro Version
https://visualstudio.microsoft.com/it/vs/compare/
•Really powerful tools but poorly documented/blogged
•Needs knowledge on the application and on .net framework
5. WORKFLOW
Here is the general process :
•Configure the performance session by specifying the profiling method and the data
that you want to collect.
•Collect profiling data by running the application in the performance session.
•Analyze the data to identify the performance issue.
•Modify code with the goal to increases the application performance of the code
•Collect profiling data on the changed code, and compare the profiling data of the
original and changed data.
•Generate a report that documents the increase in performance.
6. COSA FA LO STRUMENTO
•Analisi CPU
•Analisi Memoria
•Analisi UI nei soli progetti UWP
•Analisi risorse di rete in UWP - WPF
•Confronto tra due tracciature diverse
•Analisi puntuale dei colli di bottiglia
7. COSA NON FA LO STRUMENTO
•Analisi query
•Analisi piani di esecuzione query
•Analisi Javascript
•Analisi UI Web
•Analisi SPA
•Analisi Sharepoint
9. METODI DI CAMPIONATURA
Campionamento Raccoglie dati statistici sulle operazioni eseguite da un'applicazione.
Strumentazione Raccoglie informazioni dettagliate sugli intervalli per ogni chiamata di
funzione.
Concorrenza Raccoglie informazioni dettagliate sulle applicazioni multithread.
Memoria .NET Raccoglie informazioni dettagliate sull'allocazione e la Garbage
Collection della memoria .NET.
10. CAMPIONAMENTO
Il metodo di campionamento è leggero e ha un impatto minimo sull'esecuzione dei metodi
dell'applicazione.
È utile per le operazioni seguenti:
•Analisi iniziali delle prestazioni dell'applicazione.
•Analisi dei problemi di prestazioni che comportano l'uso del processore (CPU).
È anche possibile raccogliere dati di profilatura di interazione tra livelli (TIP), che forniscono
informazioni sulle query eseguite su un database SQL server tramite ADO.NET.
11. STRUMENTAZIONE
Utile per le operazioni seguenti:
▪Analisi dei colli di bottiglia di input/output, ad esempio attività di I/O su disco.
▪Analisi di un particolare modulo o set di funzioni.
I report di strumentazione usano quattro valori per rappresentare il tempo totale impiegato in una funzione o una riga del codice
sorgente:
•Inclusivo trascorso - Tempo totale impiegato per l'esecuzione della funzione o della riga del codice sorgente.
•Inclusivo applicazione - Tempo impiegato per l'esecuzione della funzione o della riga del codice sorgente, escluso il tempo
trascorso in chiamate al sistema operativo.
•Esclusivo trascorso - Tempo impiegato per l'esecuzione del codice nel corpo della funzione o della riga del codice sorgente. È
escluso il tempo impiegato per l'esecuzione di funzioni chiamate dalla funzione o dalla riga del codice sorgente.
•Esclusivo applicazione - Tempo impiegato per l'esecuzione del codice nel corpo della funzione o della riga del codice sorgente. È
escluso il tempo impiegato per l'esecuzione di chiamate al sistema operativo e il tempo impiegato per l'esecuzione delle funzioni
chiamate dalla funzione o dalla riga del codice sorgente.
È inoltre possibile raccogliere i contatori delle prestazioni sia della CPU che del software usando il metodo di strumentazione.
12. CONCORRENZA
La profilatura della concorrenza raccoglie informazioni sulle applicazioni multithread. La
profilatura dei conflitti di risorse raccoglie informazioni dettagliate sullo stack di chiamate
ogni volta che thread concorrenti sono obbligati ad attendere l'accesso a una risorsa
condivisa.
I report sui conflitti di risorse visualizzano il numero totale di conflitti e il tempo totale
trascorso in attesa di una risorsa per i moduli, le funzioni, le righe del codice sorgente e le
istruzioni in cui si è verificata l'attesa.
Il visualizzatore di concorrenza mostra informazioni grafiche che è possibile usare per
individuare problemi relativi a colli di bottiglia delle prestazioni, sottoutilizzo della CPU,
conflitti di thread, migrazione di thread, ritardi di sincronizzazione, aree di I/O sovrapposte e
per ottenere altre informazioni.
13. MEMORIA .NET
Il metodo di profilatura dell'allocazione della memoria .NET interrompe il processore del
computer a ogni allocazione di un oggetto .NET Framework in un'applicazione sottoposta a
profilatura.
Il profiler raccoglie informazioni sul tipo, la dimensione e il numero degli oggetti che sono
stati creati in un'allocazione o eliminati in un'operazione di Garbage Collection.
Quando si verifica un evento di allocazione, il profiler raccoglie informazioni aggiuntive sullo
stack di chiamate della funzione.
Quando si verifica una Garbage Collection, il profiler raccoglie dati sugli oggetti che sono
stati eliminati e informazioni sugli oggetti in ogni generazione di Garbage Collection.
14. INTERAZIONE TRA LIVELLI
La profilatura di interazione tra livelli aggiunge informazioni a un file di dati di profilatura
sulle chiamate ADO.NET sincrone tra una pagina ASP.NET o un'altra applicazione e un
database SQL Server. I dati includono il numero e l'ora delle chiamate e i tempi massimi e
minimi. I dati di interazione tra livelli possono essere aggiunti ai dati di profilatura raccolti
con i metodi di campionamento, strumentazione, memoria .NET o concorrenza.
15. PERFORMANCE EXPLORER
Enables us to configure and start performance sessions
–Created/Filled by Performance Wizard
Session Name The name of the session. Right-click the
session name to edit the session properties
Targets Binaries that are to be profiled in the session. Can
be a binary, a VS project, or Web site. Each target have
own Properties.
Reports Files that are generated for the session. Right-
click a report name to open, remove, or export a profiler
data file. Can compare two profiler data files.
16. SUMMARY VIEW
1 - Hot Path
branch of your application's call tree that was most
active when data was collected
2 - Functions Doing the Most Individual Work.
functions with the highest exclusive samples
3 - Summary Timeline
timeline graph & CPU usage
4 - Error List
uses a set of rules to suggest ways of improving the
profiling run and to identify possible performance
problems
17. ANALYSIS RESULTS
There are also a few others Views of profiling data files
are displayed
•Call Tree
•Modules View
•Functions View
•Object Lifetime View
•Thread Details View
•Tier Interaction Views
•…
18. PROFILER APIS
• Instrumentation profiling can provide a greater level of detail ; this means that more data is
collected and instrumentation is more likely to impact the performance
• The Visual Studio profiler provides an API for controlling data collection from within an
application
allow us to limit the amount of data that is collected during a profiling session.
Simply add a reference to ToolsMicrosoft.VisualStudio.Profiler.dll
(VSDirToolsPerformance Tools)
For VS 2017: C:Program Files (x86)Microsoft Visual
StudioSharedCommonVSPerfCollectionToolsx64Microsoft.VisualStudio.Profiler.dll
21. PRODOTTI DI TERZE PARTI –
ANTS PERFORMANCE PROFILER
•Profile your SQL queries and see execution plans
•Find performance bottlenecks fast by profiling both the .NET code and the data access layer
•Get rich performance data, right-down to line-level timings and expensive database queries
•Save time going round in circles diagnosing and debugging – let the profiler do the hard work for
you
•Explore unfamiliar code bases
•Enhanced data access profiling, with support for SQL Server, Oracle, MySQL, MariaDB, and
PostgreSQL