Ayende @ Rahien

My name is Oren Eini
Founder of Hibernating Rhinos LTD and RavenDB.
You can reach me by phone or email:


+972 52-548-6969

, @ Q c

Posts: 6,124 | Comments: 45,475

filter by tags archive

Profiling with dotTrace

time to read 2 min | 256 words

I have a tiny feature and a bug fix that I want to implement before I am going to focus solely improving SvnBridge performance. This is a really quick analysis of a single scenario.

Start dotTrace and set the application to profile then start it. There are a lot of options, but the default was always good for me.


In the application, prepare it for the scenario that you are going to perform. (In SvnBridge's case, this means just setting up the server to talk to):


Perform some actions against the application:


When you are done, hit Get Snapshot:


Now, I tend to go to the hotspots and check what is costing me.


The first line, WaitMessage call is fine, this is the WinForms client that is not doing much at the moment.

The second I can't really figure out, it is starting a thread, but that doesn't take so long. I am pretty sure that this is a case of mis-measuring, or just me not understanding this, but never mind that.

The rest of the calls, which takes huge amount of time, are... remote calls. I guess I should stop talking to TFS :-)


Graham Nash

"The second I can't really figure out, it is starting a thread, but that doesn't take so long. I am pretty sure that this is a case of mis-measuring,"

Switching to thread time instead of wall time might make those timings more clear, as wall time counts time sleeping.

Jimmy Bogard

Oh the chattiness of TFS...one place I worked at could only branch on weekends as it would take down the entire server for the other several hundred developers connecting to it. Lots of fun getting calls from Malaysia and Europe screaming "I can't access source control!!!"


u should really give aqtime a run. much better than dotrace.

Adam V.

@asher: [citation needed]

Tristian Barrett

I'm sure you already recognize this; but one thing I noticed while using dotTrace and lots of remote calls, is that while your code is slowed down by the profiler, service and db calls aren't. So it's hard to directly compare how much time a remote call takes compared to an internal one, since the internal one is being exaggerated. So your remote calls are probably taking even longer percentage wise than they would appear to be in the profiler.

Frans Bouma

Does dottrace already support .net 3.5 ? The vs.net profiler in 2008 is starting to get on my nerves with its requirement of working with unsigned code...

Comment preview

Comments have been closed on this topic.


  1. The design of RavenDB 4.0: Making Lucene reliable - 8 hours from now
  2. RavenDB 3.5 whirl wind tour: I’ll find who is taking my I/O bandwidth and they SHALL pay - about one day from now
  3. The design of RavenDB 4.0: Physically segregating collections - 2 days from now
  4. RavenDB 3.5 Whirlwind tour: I need to be free to explore my data - 3 days from now
  5. RavenDB 3.5 whirl wind tour: I'll have the 3+1 goodies to go, please - 6 days from now

And 13 more posts are pending...

There are posts all the way to May 30, 2016


  1. RavenDB 3.5 whirl wind tour (14):
    02 May 2016 - You want all the data, you can’t handle all the data
  2. The design of RavenDB 4.0 (13):
    28 Apr 2016 - The implications of the blittable format
  3. Tasks for the new comer (2):
    15 Apr 2016 - Quartz.NET with RavenDB
  4. Code through the looking glass (5):
    18 Mar 2016 - And a linear search to rule them
  5. Find the bug (8):
    29 Feb 2016 - When you can't rely on your own identity
View all series



Main feed Feed Stats
Comments feed   Comments Feed Stats