Review: ANTS Profiler 4.0 Beta
A few months ago, I purchased ANTS Profiler 3.2 and have loved it. It’s really helped me dig into some of my code, find performance hang-ups, and (I think) turn out better code and learn (it’s sometimes hard to find “do betters” in a single dev environment).
I played around with a few of the 4.0 builds and they were nice, but I honestly didn’t have time to dig into them.After a busy weekend, I sat down and spent some quality time with the 4.0 beta (b 18.104.22.1680) of ANTS Profiler and am blown away.
Installation was a breeze. The 4.0 installer saw my existing 3.2 install and “upgraded” it; however, I was a bit surprised to find that the 3.2 sat side-by-side with 4.0. That’s PERFECT, actually, and I hope they plan to keep it that way.
First Run Through 4.0
I’d like to start off by saying the new profiler startup UI is fantastic. The prior “multi-step” wizard was great and easy to work through; however, I really like seeing everything on the first page. Simply set the options and click Start.
In addition, the quick access to additional performance counters, such as page requests and memory usage is really helpful. I’m curious if additional performance counters can be added or if the list (see below) is the only ones handled by ANTS.
Once things are rolling, the results come pouring in. Just like with 3.2, 4.0 has detailed line level data—percentages per called line, hits, etc. Very useful information.
However, the new call trees are sweet! Why look at spreadsheets and lines when a graphical representation is available? I have to find ways to boggle coworkers with these. 🙂
My understanding is (I haven’t RTFM’d yet) is that the call trees display both your code (those that are bolded) and the managed code from .NET and called libraries (those that are tinted).
From here, I can see that a good deal of my slow down querying AD is coming not from the top level code, but from the Ldap code in System.DirectoryServices.Protocols and that the wait caused by that is the biggest hold up in all of Session_Start.
Another cool feature is the live performance counter view while you’re profiling. This perfmon look into your application’s performance allows you to pause and checkout spikes (or unexpected dips) in any of the locked counters.
To see the line-by-line details, simply drag the mouse along a section of the graph to select it. ANTS will zoom in on just that area. You can see the “highlighted” area below in blue.
That spike can be diagnosed in the line view—one of our methods is that doesn’t call very often (42 times) is taking a HUGE amount of time due to another that is calling 1000+ times. Time to drill into that code and find a way to unloop it.
ANTS 4.0 seems quite a bit faster than 3.2 profiling the couple of .NET 3.5 web projects that I had sitting around in development. In the past, I tended to avoid running ANTS against local Cassini projects; however, this kept up pretty well (though I think it does explain the LdapConnection latency).
It also appears that 4.0 can profile remote IIS instances (at least it doesn’t refuse it like 3.2 does); however, I haven’t quite gotten that working with the port settings (more to learn).
I haven’t hit all of the features yet, but I’m very impressed with the new look and feel, added “while you profile” live features, and the call trees. I can’t wait for the next beta and/or gold release—it’s looking good!