So we had some forms in our .NET application that were slow. I took the opportunity to try out some .NET Profiling tools.
- CLRProfiler
- Red-Gates ANTS Profiler
- JetBrains dotTrace
- Speed Trace Pro
CLRProfiler
Not too useful for my application. I couldn't figure out how to easily track down slow code with it.
ANTS Profiler
The source code view of this profiler is awesome. It shows you line-by-line execution time for statements, highlighting the slowest lines with a bargraph in the margin. Very useful.
Hard to find the slowest method in an overall execution path, as it sums the perf stats for all calls to a method. Filtering is tough to use, navigating methods is painful, and it feels very bare-bones.
dotTrace
This profiler was the most useful for finding my slow code. It shows a by-executing tree of the call stack, with the time taken by each level summarized. It makes it very easy to keep drilling down to find the slowest method.
Unfortunately, other than execution time for a method, it is hard to see where a method is slow. ANTS Profiler is much more suited to this.
Speed Trace Pro
Similar data to the ANTS Profiler, but with a much better UI than ANTS. Shows caller/callee tree like dotTrace, but not quite as easy to navigate. Nice pie charts.
It crashed while I was using it. Oops!
Summary
Ideally, I'd like dotTrace to incorporate a source code view like ANTS Profiler. That would be perfect.