SlideShare a Scribd company logo
1 of 23
Download to read offline
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

Similar to Visual Studio Performance Tools

Progettazione e realizzazione di una piattaforma middleware per la gestione a...
Progettazione e realizzazione di una piattaforma middleware per la gestione a...Progettazione e realizzazione di una piattaforma middleware per la gestione a...
Progettazione e realizzazione di una piattaforma middleware per la gestione a...LucaGre
 
DotNetToscana - Sessione TypeScript
DotNetToscana - Sessione TypeScriptDotNetToscana - Sessione TypeScript
DotNetToscana - Sessione TypeScriptSinergia Totale
 
SQL Server Workload Profiling
SQL Server Workload ProfilingSQL Server Workload Profiling
SQL Server Workload ProfilingGianluca Hotz
 
Progettato per specialisti del web
Progettato per specialisti del webProgettato per specialisti del web
Progettato per specialisti del webEugenio Uccheddu
 
Porting evolutivo di una applicazione per la gestione di riferimenti bibliogr...
Porting evolutivo di una applicazione per la gestione di riferimenti bibliogr...Porting evolutivo di una applicazione per la gestione di riferimenti bibliogr...
Porting evolutivo di una applicazione per la gestione di riferimenti bibliogr...Giulio Ambrogi
 
SQL Server Benchmarking, Baselining and Workload Analysis
SQL Server Benchmarking, Baselining and Workload AnalysisSQL Server Benchmarking, Baselining and Workload Analysis
SQL Server Benchmarking, Baselining and Workload AnalysisGianluca Sartori
 
Il buon programmatore - consigli pratici per una vita felice
Il buon programmatore - consigli pratici per una vita feliceIl buon programmatore - consigli pratici per una vita felice
Il buon programmatore - consigli pratici per una vita feliceAndrea Dottor
 
Progettazione e sviluppo di un software applicativo su un single board computer
Progettazione e sviluppo di un software applicativo su un single board computerProgettazione e sviluppo di un software applicativo su un single board computer
Progettazione e sviluppo di un software applicativo su un single board computerAlessandro Mascherin
 
Application insights - Power is nothing without control
Application insights - Power is nothing without controlApplication insights - Power is nothing without control
Application insights - Power is nothing without controlRoberto Albano
 
Tesi Discussione
Tesi DiscussioneTesi Discussione
Tesi DiscussioneYeser Rema
 
Profilazione di applicazioni PHP con XHProf.
Profilazione di applicazioni PHP con XHProf.Profilazione di applicazioni PHP con XHProf.
Profilazione di applicazioni PHP con XHProf.Filippo Matteo Riggio
 
Application insights-gabrome18
Application insights-gabrome18Application insights-gabrome18
Application insights-gabrome18Roberto Albano
 
Sencha touch: Sviluppare un'app - 4° parte
Sencha touch: Sviluppare un'app - 4° parteSencha touch: Sviluppare un'app - 4° parte
Sencha touch: Sviluppare un'app - 4° parteGiuseppe Toto
 
Machine learning models continuous deployment on azure using devops
Machine learning models continuous deployment on azure using devopsMachine learning models continuous deployment on azure using devops
Machine learning models continuous deployment on azure using devopsIgor Antonacci
 
XeDotNet - Source Generator
XeDotNet - Source GeneratorXeDotNet - Source Generator
XeDotNet - Source GeneratorMarco Bortolin
 
Introduzione a JavaScript e jQuery (1/2)
Introduzione a JavaScript e jQuery (1/2)Introduzione a JavaScript e jQuery (1/2)
Introduzione a JavaScript e jQuery (1/2)Giuseppe Vizzari
 
Lo stato dell' arte sulla documentazione dei progetti ICT
Lo stato dell' arte sulla documentazione dei progetti ICTLo stato dell' arte sulla documentazione dei progetti ICT
Lo stato dell' arte sulla documentazione dei progetti ICTMatteo Gentile
 
Quanto mi costa SQL Pool Serverless Synapse
Quanto mi costa SQL Pool Serverless SynapseQuanto mi costa SQL Pool Serverless Synapse
Quanto mi costa SQL Pool Serverless SynapseMarco Pozzan
 

Similar to Visual Studio Performance Tools (20)

Progettazione e realizzazione di una piattaforma middleware per la gestione a...
Progettazione e realizzazione di una piattaforma middleware per la gestione a...Progettazione e realizzazione di una piattaforma middleware per la gestione a...
Progettazione e realizzazione di una piattaforma middleware per la gestione a...
 
DotNetToscana - Sessione TypeScript
DotNetToscana - Sessione TypeScriptDotNetToscana - Sessione TypeScript
DotNetToscana - Sessione TypeScript
 
SQL Server Workload Profiling
SQL Server Workload ProfilingSQL Server Workload Profiling
SQL Server Workload Profiling
 
Progettato per specialisti del web
Progettato per specialisti del webProgettato per specialisti del web
Progettato per specialisti del web
 
Porting evolutivo di una applicazione per la gestione di riferimenti bibliogr...
Porting evolutivo di una applicazione per la gestione di riferimenti bibliogr...Porting evolutivo di una applicazione per la gestione di riferimenti bibliogr...
Porting evolutivo di una applicazione per la gestione di riferimenti bibliogr...
 
SQL Server Benchmarking, Baselining and Workload Analysis
SQL Server Benchmarking, Baselining and Workload AnalysisSQL Server Benchmarking, Baselining and Workload Analysis
SQL Server Benchmarking, Baselining and Workload Analysis
 
Il buon programmatore - consigli pratici per una vita felice
Il buon programmatore - consigli pratici per una vita feliceIl buon programmatore - consigli pratici per una vita felice
Il buon programmatore - consigli pratici per una vita felice
 
Progettazione e sviluppo di un software applicativo su un single board computer
Progettazione e sviluppo di un software applicativo su un single board computerProgettazione e sviluppo di un software applicativo su un single board computer
Progettazione e sviluppo di un software applicativo su un single board computer
 
Application insights - Power is nothing without control
Application insights - Power is nothing without controlApplication insights - Power is nothing without control
Application insights - Power is nothing without control
 
Tesi Discussione
Tesi DiscussioneTesi Discussione
Tesi Discussione
 
Profilazione di applicazioni PHP con XHProf.
Profilazione di applicazioni PHP con XHProf.Profilazione di applicazioni PHP con XHProf.
Profilazione di applicazioni PHP con XHProf.
 
Application insights-gabrome18
Application insights-gabrome18Application insights-gabrome18
Application insights-gabrome18
 
Sencha touch: Sviluppare un'app - 4° parte
Sencha touch: Sviluppare un'app - 4° parteSencha touch: Sviluppare un'app - 4° parte
Sencha touch: Sviluppare un'app - 4° parte
 
Machine learning models continuous deployment on azure using devops
Machine learning models continuous deployment on azure using devopsMachine learning models continuous deployment on azure using devops
Machine learning models continuous deployment on azure using devops
 
Erlug
ErlugErlug
Erlug
 
XeDotNet - Source Generator
XeDotNet - Source GeneratorXeDotNet - Source Generator
XeDotNet - Source Generator
 
Introduzione a JavaScript e jQuery (1/2)
Introduzione a JavaScript e jQuery (1/2)Introduzione a JavaScript e jQuery (1/2)
Introduzione a JavaScript e jQuery (1/2)
 
Relazione Agic
Relazione AgicRelazione Agic
Relazione Agic
 
Lo stato dell' arte sulla documentazione dei progetti ICT
Lo stato dell' arte sulla documentazione dei progetti ICTLo stato dell' arte sulla documentazione dei progetti ICT
Lo stato dell' arte sulla documentazione dei progetti ICT
 
Quanto mi costa SQL Pool Serverless Synapse
Quanto mi costa SQL Pool Serverless SynapseQuanto mi costa SQL Pool Serverless Synapse
Quanto mi costa SQL Pool Serverless Synapse
 

More from Andrea Tosato

Codemotion Azure Container Apps
Codemotion Azure Container AppsCodemotion Azure Container Apps
Codemotion Azure Container AppsAndrea Tosato
 
Azure Static Web Apps & Blazor
Azure Static Web Apps & BlazorAzure Static Web Apps & Blazor
Azure Static Web Apps & BlazorAndrea Tosato
 
How to develop modern web application, with no money and nod javascript
How to develop modern web application, with no money and nod javascriptHow to develop modern web application, with no money and nod javascript
How to develop modern web application, with no money and nod javascriptAndrea Tosato
 
Entity framework core v3 from sql to no sql
Entity framework core v3 from sql to no sqlEntity framework core v3 from sql to no sql
Entity framework core v3 from sql to no sqlAndrea Tosato
 
How to develop modern web application - With no money and no Javascript
How to develop modern web application - With no money and no JavascriptHow to develop modern web application - With no money and no Javascript
How to develop modern web application - With no money and no JavascriptAndrea Tosato
 
Mixing Identity server, AAD, ASP .NET Identity
Mixing Identity server, AAD, ASP .NET IdentityMixing Identity server, AAD, ASP .NET Identity
Mixing Identity server, AAD, ASP .NET IdentityAndrea Tosato
 
An introduction to GraphQL in .NET Core
An introduction to GraphQL in .NET CoreAn introduction to GraphQL in .NET Core
An introduction to GraphQL in .NET CoreAndrea Tosato
 
Cost Optimization - Global Azure Bootcamp 2019
Cost Optimization - Global Azure Bootcamp 2019Cost Optimization - Global Azure Bootcamp 2019
Cost Optimization - Global Azure Bootcamp 2019Andrea Tosato
 
Deep Dive Azure Functions - Global Azure Bootcamp 2019
Deep Dive Azure Functions - Global Azure Bootcamp 2019Deep Dive Azure Functions - Global Azure Bootcamp 2019
Deep Dive Azure Functions - Global Azure Bootcamp 2019Andrea Tosato
 
Azure Function Workflow
Azure Function WorkflowAzure Function Workflow
Azure Function WorkflowAndrea Tosato
 
Azure Cognitive Service on Container
Azure Cognitive Service on ContainerAzure Cognitive Service on Container
Azure Cognitive Service on ContainerAndrea Tosato
 
Deploy multi-environment application with Azure DevOps
Deploy multi-environment application with Azure DevOpsDeploy multi-environment application with Azure DevOps
Deploy multi-environment application with Azure DevOpsAndrea Tosato
 
Azure Cognitive Service in Container
Azure Cognitive Service in ContainerAzure Cognitive Service in Container
Azure Cognitive Service in ContainerAndrea Tosato
 
Azure Signalr Service
Azure Signalr ServiceAzure Signalr Service
Azure Signalr ServiceAndrea Tosato
 
Xamarin - Microcharts
Xamarin - MicrochartsXamarin - Microcharts
Xamarin - MicrochartsAndrea Tosato
 
Introduzione Xamarin
Introduzione XamarinIntroduzione Xamarin
Introduzione XamarinAndrea Tosato
 

More from Andrea Tosato (20)

Codemotion Azure Container Apps
Codemotion Azure Container AppsCodemotion Azure Container Apps
Codemotion Azure Container Apps
 
Lite db for dummies
Lite db for dummiesLite db for dummies
Lite db for dummies
 
Azure Static Web Apps & Blazor
Azure Static Web Apps & BlazorAzure Static Web Apps & Blazor
Azure Static Web Apps & Blazor
 
Dapr logicapps
Dapr logicappsDapr logicapps
Dapr logicapps
 
How to develop modern web application, with no money and nod javascript
How to develop modern web application, with no money and nod javascriptHow to develop modern web application, with no money and nod javascript
How to develop modern web application, with no money and nod javascript
 
Entity framework core v3 from sql to no sql
Entity framework core v3 from sql to no sqlEntity framework core v3 from sql to no sql
Entity framework core v3 from sql to no sql
 
How to develop modern web application - With no money and no Javascript
How to develop modern web application - With no money and no JavascriptHow to develop modern web application - With no money and no Javascript
How to develop modern web application - With no money and no Javascript
 
Mixing Identity server, AAD, ASP .NET Identity
Mixing Identity server, AAD, ASP .NET IdentityMixing Identity server, AAD, ASP .NET Identity
Mixing Identity server, AAD, ASP .NET Identity
 
An introduction to GraphQL in .NET Core
An introduction to GraphQL in .NET CoreAn introduction to GraphQL in .NET Core
An introduction to GraphQL in .NET Core
 
DevOps Heroes 2019
DevOps Heroes 2019DevOps Heroes 2019
DevOps Heroes 2019
 
dotNetConf2019
dotNetConf2019dotNetConf2019
dotNetConf2019
 
Cost Optimization - Global Azure Bootcamp 2019
Cost Optimization - Global Azure Bootcamp 2019Cost Optimization - Global Azure Bootcamp 2019
Cost Optimization - Global Azure Bootcamp 2019
 
Deep Dive Azure Functions - Global Azure Bootcamp 2019
Deep Dive Azure Functions - Global Azure Bootcamp 2019Deep Dive Azure Functions - Global Azure Bootcamp 2019
Deep Dive Azure Functions - Global Azure Bootcamp 2019
 
Azure Function Workflow
Azure Function WorkflowAzure Function Workflow
Azure Function Workflow
 
Azure Cognitive Service on Container
Azure Cognitive Service on ContainerAzure Cognitive Service on Container
Azure Cognitive Service on Container
 
Deploy multi-environment application with Azure DevOps
Deploy multi-environment application with Azure DevOpsDeploy multi-environment application with Azure DevOps
Deploy multi-environment application with Azure DevOps
 
Azure Cognitive Service in Container
Azure Cognitive Service in ContainerAzure Cognitive Service in Container
Azure Cognitive Service in Container
 
Azure Signalr Service
Azure Signalr ServiceAzure Signalr Service
Azure Signalr Service
 
Xamarin - Microcharts
Xamarin - MicrochartsXamarin - Microcharts
Xamarin - Microcharts
 
Introduzione Xamarin
Introduzione XamarinIntroduzione Xamarin
Introduzione Xamarin
 

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