An easy to use profiler delivering rich .NET performance data

Discover which method calls take how much time and if JIT-compilation is the bottleneck.

Find out which lines of code are slow and how many times they are executed.

Discover if your application has to wait for synchronization or painfully long I/O operations like database queries.


Instrumentation + Overhead Compensation = Better Results

NProfiler supports two powerful profiling modes: sampling and tracing. Sampling is lightweight and doesn’t affect your application’s execution speed very much, but also provides less detailed performance data (for example no hit counts).

Tracing adds additional instructions to applications (instrumentation) in order to collect more detailed performance data than sampling profilers, like hit counts, performance related exception metrics and insights into code that has execution times shorter than the sampling interval.

The problem with instrumentation is that the added instructions cause dramatic changes to execution times. Other .NET profilers don’t compensate for these distortions and often display completely misleading results, like telling you that a line of code takes 70% of time, while in reality it’s closer to 20%. Due to these inaccurate results, you will be left trying to optimize the wrong parts of your source code.

NProfiler is the only .NET profiler that can estimate and subtract even massively distorting line-level instrumentation overhead in order to provide extremely realistic performance data. To fully understand why NProfiler delivers far more accurate times, take a look at this short code sample and read the comments.


NProfiler is the most accurate profiler

We used different tools to profile a short code sample that adds 10 million random numbers to a list and then sorts it. As you can see, most profilers give surprisingly unrealistic times. We used a DELL Vostro 430 with an Intel® Core™ i5-750 Processor and Windows 10, but the results should be quite similar on other machines.

Profiler Time attributed for adding 10 million random numbers to a list. Time attributed for sorting the list.
Real times (No profiler attached, times measured with Stopwatch class) 14% 86% Real times that aren’t distorted by any profiler.
NProfiler (Tracing; line-level and method-level timings; only methods with source) 13% 78% NProfiler is the most accurate instrumenting profiler.
Redgate ANTS 9.3 Professional (Line-level and method-level timings; only methods with source) 42% 45% ANTS Performance Profiler looks quite professional, but nevertheless provides unrealistic results.
JetBrains dotTrace 6.2 (Line-by-line profiling mode) 60% 36% We enabled Advanced > High accuracy. Without enabling this option, the results were even worse (70% : 26%).
Visual Studio 2015 Profiler (Instrumentation) 90% 9% The poorest results of all tested profilers. It appears that Microsoft didn’t put any efforts into overhead compensation.
Visual Studio 2015 Profiler (Sampling) 0% 100% Profiler acted strangely. It only displayed data for the Main method (no data for other methods) and attributed 100% of time to the line that calls Sort().

Powerful, easy to use features

Profile any .NET application

Including .NET executables, ASP.NET web applications, running .NET processes, Windows Services and Silverlight 4+.

Timeline

See your application’s CPU usage over time and select problematic ranges to display only the performance data that matters.

Call Tree

Get times and hit counts for all method calls and events, like JIT-compilation. Poor performing stack traces will be auto-expanded.

Call Lists

Aggregate call tree items into flat lists to investigate the total performance impact of methods.

Line-by-line & statement results

See line-by-line performance data. If you have multiple statements on the same line, move the mouse over your code to get statement-level data.

CPU Time vs. Wall-Clock Time

Understand if your code is slow because of computing intensity or because of long blocking operations. CPU time excludes blocking, such as sleeping, synchronization or waiting for I/O. Wall-clock time includes blocking.

Processes & Threads

Examine the performance of whole processes or single threads. You can also profile child processes.

Profile without source code

Most of the time you will want to profile only your own methods, but with NProfiler, you can also profile .NET framework methods and third party code.

Time Formats

Display times as percentages, seconds, milliseconds or high-precision ticks (1s = 10,000,000,000 ticks).

Choose your favorite language

Profile any .NET language and select your favorite syntax for displaying method signatures afterwards.

Save & load profiling results

Save results for later comparison against an optimized version of your application, or to show them to your coworkers.

Inline Help

NProfiler is so intuitive and easy to use, it is virtually self-explanatory. More complex options have small, but helpful icons.


Supported Features

Feature Supported
Profile .NET and .NET Core executables
Profile ASP.NET and ASP.NET Core web applications (IIS Express)
Profile ASP.NET and ASP.NET Core web applications (IIS)
Attach to running .NET 4+ processes
Profile .NET Windows services
Profile Silverlight
Lightweight sampling mode
Detailed tracing mode (instrumentation)
Profile any .NET language (C#, VB.NET, C++/CLI, F#, ...)
Profile 32-bit and 64-bit applications
Overhead compensation for extremely realistic performance data
Timeline
Call tree
Create custom call lists
CPU time & wall-clock time
Examine the performance of whole processes or single threads
Profile child processes
Display times as percentages, seconds, milliseconds or ticks
Display C# or VB syntax
Save & load profiling results
Profile methods without source code / without debug symbols
Line-level & statement-level performance data

Supported Technologies

Profile any .NET application

  • .NET executables including WPF, Windows Forms and Console applications.
  • ASP.NET applications like MVC or Web Forms, hosted in IIS 7+ or IIS Express.
  • .NET Core desktop and ASP.NET Core web applications.
  • .NET Windows services, Silverlight 4+ and WCF.

In any .NET language

  • Including C#, VB.NET, C++/CLI and F#.

Supported .NET versions

  • Profile .NET 2.0 or later (32-bit and 64-bit).
  • NProfiler UI requires .NET 4.5.

Supported Windows versions

  • Windows Vista or later.
  • Windows Server 2008 or later.

Bonus Feature

NProfiler uses some clever tricks to provide line-by-line results even for security transparent and partially-trusted assemblies. Other profilers simply crash or don’t provide line-level data if they encounter such an assembly.

You can test this by line-level profiling a simple "Hello World!" console application that is marked with an AllowPartiallyTrustedCallers or SecurityTransparent attribute.


I already have a .NET profiler. The results seem fine to me.

You will be surprised how unreliable the results of most .NET profilers are. As our tests demonstrate, other tools are unable to subtract their line-level instrumentation overhead. Therefore, we strongly recommend that you use our code sample to check the accuracy of your current profiler.


What if I need support?

Simply send us a message! You will get a response directly from our developers. These guys know everything about NProfiler and will do their best to solve your problem. If you report a bug, we will try to fix it within days, not weeks or months.


Licensing

Individual Developer License

NProfiler is licensed per developer. You need one license for each developer using the product. Each developer is allowed to use their license on two computers.

Floating License

We do not offer floating licenses, but you will receive a volume discount if you buy multiple licenses. See our purchase page for details.

Student License

We provide free non-commercial use licenses for individual students in education, upon verification. Please contact us to apply for a license.

Open Source License

We offer free licenses for use on your open source projects. Please contact us to apply for a license.


Ready for the most accurate .NET performance data?

Download NProfiler