Find out why your .NET application is slow.
Make your .NET code lightning-fast. Save 90% of optimization time.
NProfiler is a fast, extremely accurate performance profiler for .NET desktop and web applications. It gives you everything you need to quickly optimize your .NET code and offers enhanced usability compared with the Visual Studio profiler. Thanks to superior overhead compensation, NProfiler also provides far more realistic performance data than other commercial tools on the market. This enables you to fix a wide range of performance problems.
An easy to use profiler delivering rich .NET performance data
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(). |
With NProfiler’s unparalleled accuracy you can...
- Stop guessing what causes performance bottlenecks
- Have confidence in displayed performance data
- Make your applications lightning-fast
- Save 90% of optimization time
- Enjoy the benefits of happier users (everybody loves fast apps and websites)
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.