Lightweight, accurate, gorgeous .NET performance profiler

A must-have tool for .NET developers to find slow methods, fix deadlocks, and optimize code.

Fast and easy to use, provides 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.

What makes NProfiler special?

Superior data accuracy and reliability

NProfiler's newly developed profiling engine is designed from the ground up to provide the most accurate performance data possible. It achieves superior accuracy through a process called overhead compensation.

Overhead compensation dramatically improves the quality of profiling results by removing the profiler's influence (the profiler overhead) from the performance data so you can see how your code would have performed without the profiler's presence.

Other .NET profilers don't compensate for these distortions and often display completely misleading results, like telling you that a method takes 70% of the 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 code.

NProfiler can estimate and subtract even massively distorting profiler overhead to provide highly realistic performance data.

Read more

Profile any .NET application

Including .NET executables, ASP.NET web applications, Windows services, IIS and IIS Express sites and attach to running .NET processes.

In any .NET language with any framework

Profile C#, VB.NET, and F# using .NET Framework 2.0+, .NET Core, .NET 5+, and .NET Standard on Windows and Windows Server.

Integrated decompilation

Get line-level timings even if you don't have source code, for example, for third-party components or legacy assemblies.

Works seamlessly with .NET security

NProfiler uses clever tricks to provide line-by-line results even for security-transparent and partially-trusted assemblies, while other profilers simply crash.

Powerful, intuitive user interface

Easy configuration

Benefit from reasonable default values and recommendations for all options. Use saved settings from previous sessions for quick profiling.

Pinpoint profiling

Prevent massive slowdowns in your application by profiling only the methods you are truly interested in.

Timeline

See performance metrics over time and select problematic ranges to display only 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.

Method list

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

Line & statement-level results

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

Processes & threads

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

CPU, blocking, and total time

Understand if your code is slow due to computing intensity or extended blocking operations like sleeping, synchronization, or waiting for I/O.

Time formats

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

Choose your favorite programming language

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

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 that it is virtually self-explanatory. More complex options have small but helpful icons.

Ready for the most accurate .NET performance data?

Download NProfiler