Larkware

We get up early so that you don't have to.

Review: dotTrace

dotTrace 1.1, $249
JetBrains
Prague, Czech Republic
+420 2 4172 2501
(609) 714 7883
http://www.jetbrains.com/profiler/

dotTrace is an easy-to-use profiler for .NET 1.1 and 2.0 applications that works easily with both standalone and ASP.NET applications. The user interface for doing a profiling run is simplicity itself: you choose the executable or Web page you want to run and the working directory, supply any optional parameters, and tell it to launch. You can decide whether to start profiling immediately or not; this allows you to skip any startup thrashing if you're not interested in that part of the application's performance. At that point a little floating palette appears with buttons to start profiling, take a snapshot, and terminate the application. While it's running, dotTrace seems to have very little impact on the application being profiled.

Take a snapshot, and you end up in the main dotTrace user interface. This is where you can analyze the results of your profiling session. There are several different views for analyzing what went on: a call tree by threads or one that collapses all the threads together, a plan view that gives you basic method-by-method statistics (useful if you want to get a quick look at what gets called the most, for example), and a Hot Spots view that shows you where the most time was spent. The latter is unique in that it offers a callback tree for each method - that is, you can expand a treeview showing how your code got to each of the hot spots, so you can tell not only where the time was spent but what paths got there. The user interface lets you open new views in new tabs, and you can start a tab from any point in the tree to drilldown on an area of interest.

Other capabilities in the user interface include search and navigation that are hooked up to the keyboard as well as the mouse for those who prefer not to take their hands from the keys, filtering that lets you select libraries whose methods should always be collapse in the tree (so you don't waste your time drilling into the system libraries), and automatic display of source code when you select a method for which you happen to have the source code hanging around. You can save and load snapshots for later analysis, as well as export them to text or XML. There's also a command-line API for running dotTrace. Combine that with the XML export, and I could see hooking up profiling as part of a continuous integration process, which is a nice bit of integration.

What's missing? Well, I'd like to see Visual Studio .NET integration; I personally prefer to have all my .NET tools in one interface instead of scattered around my desktop. Memory profiling is another feature that it would be nice to have at times, though I tend to use it less in practice. Overall, though, this is an easy-to-use profiler that gets the basics right. Right now JetBrains is running a special promotion combining dotTrace with their ReSharper refactoring tool at a combined price of $299.

  Click for larger screenshot

Mike Gunderloy is the lead developer for Larkware and author of numerous books and articles on programming topics.

Published October 19, 2005