SlideShare a Scribd company logo
saturday 2018
VISUAL STUDIO
PERFORMANCE TOOLS
How to improve performance
INTRODUZIONE
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
WORKFLOW
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.
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
COSA NON FA LO STRUMENTO
•Analisi query
•Analisi piani di esecuzione query
•Analisi Javascript
•Analisi UI Web
•Analisi SPA
•Analisi Sharepoint
LO STRUMENTO
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.
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.
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.
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.
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.
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.
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.
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
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
•…
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
PROFILING UNIT TESTS
ALTRI STRUMENTI
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
DEMO GITHUB
https://github.com/andreatosato/VSProfiler
GRAZIE
ATosato86
andreatosato
andrea.tosato
CloudGen Verona
aspitalia.com
4ward

More Related Content

PPTX
ASP.NET performance optimization
PPTX
Application insights - Power is nothing without control
PDF
Jvm performance Tuning
PPTX
EtnaDev 2016 - Application Insights
PPTX
A performance tuning methodology
PPTX
Application insights - Meet{cast} - Meetup #AperiTech dotNET{podcast} - Marzo...
PPTX
Ttg 09 07_2015_debug_vs_2015
PDF
Code like a developer, think like a CEO
ASP.NET performance optimization
Application insights - Power is nothing without control
Jvm performance Tuning
EtnaDev 2016 - Application Insights
A performance tuning methodology
Application insights - Meet{cast} - Meetup #AperiTech dotNET{podcast} - Marzo...
Ttg 09 07_2015_debug_vs_2015
Code like a developer, think like a CEO

Similar to Visual Studio Performance Tools (6)

PDF
Di Salvo Gabriele, Custom Development. Dal dato all’automazione dell’analisi ...
PPTX
DevOps@Work 2017 - Application insights more control, more power
PDF
SQL Server Workload Profiling
PPTX
Azure Application Insights
PPTX
Application insights-gabrome18
PPTX
SQL Server Benchmarking, Baselining and Workload Analysis
Di Salvo Gabriele, Custom Development. Dal dato all’automazione dell’analisi ...
DevOps@Work 2017 - Application insights more control, more power
SQL Server Workload Profiling
Azure Application Insights
Application insights-gabrome18
SQL Server Benchmarking, Baselining and Workload Analysis
Ad

More from Andrea Tosato (20)

PPTX
Codemotion Azure Container Apps
PPTX
Lite db for dummies
PDF
Azure Static Web Apps & Blazor
PPTX
Dapr logicapps
PPTX
How to develop modern web application, with no money and nod javascript
PPTX
Entity framework core v3 from sql to no sql
PDF
How to develop modern web application - With no money and no Javascript
PDF
Mixing Identity server, AAD, ASP .NET Identity
PDF
An introduction to GraphQL in .NET Core
PDF
DevOps Heroes 2019
PPTX
dotNetConf2019
PPTX
Cost Optimization - Global Azure Bootcamp 2019
PPTX
Deep Dive Azure Functions - Global Azure Bootcamp 2019
PPTX
Azure Function Workflow
PPTX
Azure Cognitive Service on Container
PPTX
Deploy multi-environment application with Azure DevOps
PPTX
Azure Cognitive Service in Container
PPTX
Azure Signalr Service
PPTX
Xamarin - Microcharts
PPTX
Introduzione Xamarin
Codemotion Azure Container Apps
Lite db for dummies
Azure Static Web Apps & Blazor
Dapr logicapps
How to develop modern web application, with no money and nod javascript
Entity framework core v3 from sql to no sql
How to develop modern web application - With no money and no Javascript
Mixing Identity server, AAD, ASP .NET Identity
An introduction to GraphQL in .NET Core
DevOps Heroes 2019
dotNetConf2019
Cost Optimization - Global Azure Bootcamp 2019
Deep Dive Azure Functions - Global Azure Bootcamp 2019
Azure Function Workflow
Azure Cognitive Service on Container
Deploy multi-environment application with Azure DevOps
Azure Cognitive Service in Container
Azure Signalr Service
Xamarin - Microcharts
Introduzione Xamarin
Ad

Visual Studio Performance Tools

  • 1. saturday 2018 VISUAL STUDIO PERFORMANCE TOOLS How to improve performance
  • 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