Understand profiler performance collection methods
Applies to: Visual Studio Visual Studio for Mac
Note
This article applies to Visual Studio 2017. If you're looking for the latest Visual Studio documentation, see Visual Studio documentation. We recommend upgrading to the latest version of Visual Studio. Download it here
This document outlines the data collection methods that tools within the Visual Studio Performance Profiler utilize.
Sampling
Sampling methods for profiling collect statistical data about the work that is performed by an application during a profiling run. Data collection is done by collecting information on the application at a regular interval or sampling frequency such as every millisecond and then analyzing this data to create a model of where time was spent in the application. The sampling method is lightweight and has little effect on the execution of the application being profiled. Tools in the Performance Profiler that utilize the sampling method include the CPU Usage tool.
Instrumentation
Instrumentation profiling collects detailed information about the work that is performed by an application during a profiling run. Data collection is done by tools that either inject code into a binary file that captures timing information or by using callback hooks to collect and emit exact timing and call count information while an application runs. The instrumentation method has a high overhead when compared to sampling-based approaches. Tools in the Performance Profiler that use instrumentation include the .NET Object Allocation Tool.