This article applies to Visual Studio 2015. If you're looking for the latest Visual Studio documentation, use the version selector at the top left. We recommend upgrading to Visual Studio 2019. Download it here

The Counter option collects data from processor (hardware) performance counters.

  • When you are using the sampling profiling method, Counter specifies the on-chip performance counter and the number of counter events to use as the sampling interval. You can specify only one counter when you are using sampling.

  • When you are using the instrumentation profiling method, the number of counter events that occurred in the interval between the previous and current collection events are listed as separate fields in profiler reports. Multiple Counter options can be specified when you are using instrumentation.

    Each processor type has its own set of hardware performance counters. The profiler defines a set of generic performance counters that are common to almost all processors. To list the generic and processor-specific counters on your computer, use the VSPerfCmd QueryCounters command.


VSPerfCmd.exe {/Launch:AppName | /Attach PID} /Counter:Name[,Reload[,FriendlyName]][Options]  
VSPerfCmd.exe /Start:Method /Counter:Name[,Reload[,FriendlyName]][/Counter:Name[,Reload[,FriendlyName]]][Options]  


The name of the counter. Use the VSPerfCmd.exe /QueryCounters option to list the names of available counters on the computer.

The number of counter events in the sampling interval. Do not use with the instrumentation method.

(Optional) The string to use in place of Name in the column headers of profiler reports and views.

Required Options

The Counter option can only be used with one of the following options:

Start: Trace
Initializes the profiler to use the instrumentation method.

Launch: AppName
Starts the specified application and the profiler. The profiler must be initialized to use the sampling method.

Attach: PID
Starts the profiler and attaches it to the process specified by the process ID. The profiler must be initialized to use the sampling method.


The sampling method example demonstrates how to sample an application at every 1000 occurrences of the generic profiler counter NonHaltedCycles.

The instrumentation method example demonstrates how to initialize the profiler to collect L2InstructionFetches counter events. The L2InstructionFetches counter name is specific to the processor.

; Sample Method Example  
VSPerfCmd.exe /Start:Sample /Output:TestApp.exe.vsp  
VSPerfCmd.exe /Launch:TestApp.exe /Counter:NonHaltedCycles,1000,"Non-Halted Cycles"  
VSPerfCmd.exe /Start:Trace /Output:TestApp.exe.vsp /Counter:L2InstructionFetches,,"L2 Cache Instruction Fetches"  

See Also

Profiling Stand-Alone Applications
Profiling ASP.NET Web Applications
Profiling Services