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,128 | Comments: 45,548

filter by tags archive

NH ProfTeaser

time to read 1 min | 77 words

If you want to learn more, come to my Advanced NHibernate talk tomorrow.


This time, this is literally a snapshot of the application as it is running, and it is showing most of the surface level functionality that exists at the moment in the application.

Oh, and all the kudos for the look and feel goes to Christopher and Rob, who make it looks so easy.

More posts in "NH Prof" series:

  1. (09 Dec 2010) Alert on bad ‘like’ query
  2. (10 Dec 2009) Filter static files
  3. (16 Nov 2009) Exporting Reports
  4. (08 Oct 2009) NHibernate Search Integration
  5. (19 Aug 2009) Multiple Session Factory Support
  6. (07 Aug 2009) Diffing Sessions
  7. (06 Aug 2009) Capturing DDL
  8. (05 Aug 2009) Detect Cross Thread Session Usage
  9. (22 May 2009) Detecting 2nd cache collection loads
  10. (15 May 2009) Error Detection
  11. (12 May 2009) Queries by Url
  12. (04 Feb 2009) View Query Results
  13. (18 Jan 2009) Superfluous <many-to-one> update
  14. (18 Jan 2009) URL tracking
  15. (10 Jan 2009) Detecting distributed transactions (System.Transactions)
  16. (06 Jan 2009) The Query Cache
  17. (05 Jan 2009) Query Duration
  18. (24 Dec 2008) Unbounded result sets
  19. (24 Dec 2008) Row Counts


Tommaso Caldarola

The main menu on the right side is not very intuitive, imho.


Please record the session!

You can even charge for it..


Coming along very nicely Oren, The Ubuntu-like theme looks very attractive and the usability looks very intuitive - it looks like you have access to a good UI Designer.

Craig Neuwirt


I guess there is no need to remind you in email to show the parameter replacements :-)

Good visiting with you yesterday.



Looking great!

I suppose statistic has to be turned on for this to work? Hopefully I'm wrong here (I haven't made any measurements myself), but I thought this was not recommended in live enviroments because of the over head? In other words - this profiler is not supposed to be used on live system running in "normal mode"?

Peter Morris

Why so many queries?

Select ... from Blogs where page.Row > 0;

Select ... from Posts where Posts.BlogID in (1,2,3,4,5);

Select ... from Comments where Comments.PostID in (1,2,3,4,5,6,7,8,9);

Ayende Rahien


Stats are not really problematic from perf perspective.

But if you are not using them, there is not point in having them on.

The profiler has several modes, one of them is for online profiling, in which I assume that perf isn't critical issue, and I can spend more time getting more data.

The second mode is offline mode, in which we generate a file which will be later read by the profiler as leasure.

Ayende Rahien


I am showing SELECT N+1 issue.

The point in the picture is to show how you can recognize that

Peter Morris

Oh I see. I am just used to my OPF optimising stuff like this for me so not really used to seeing it.



Looks very promising! Keep up good work Oren!


It looks really nice

Daniel Fernandes


I haven't followed much your project so bear with me.

Are you planning on adding the ability to earmark the calling code (.net) responsible for executing inefficient queries so that it's easy to see where different fetching strategies should be used ?

PS: it was nice to see you at the London .Net beers and your enthousiasm with DSLs :)

Ayende Rahien


I don't only plan on doing that, it is already there. You can see the stack trace tab which contains that.


Is that using Caliburn?

Frans Bouma

What I wonder is: how are you attaching the profiler to a live application? The reason is that once you are able to do that, you're able to see data which might not be for your eyes. I.o.w. how are you going to offer security for this?


Hmm... if any data that we shouldn't be seeing then it should be encrypted in the first place.



Yes. But, only in a minor way in the current version. Essentially, the main Menu uses Actions to execute methods on the MenuModel. The rest of the UI, is accomplished entirely through basic databinding to a set of rich presentation model classes.


Great job guys!

Comment preview

Comments have been closed on this topic.


  1. The low level interview question - 3 hours from now
  2. The worker pattern - 3 days from now

There are posts all the way to May 30, 2016


  1. The design of RavenDB 4.0 (14):
    26 May 2016 - The client side
  2. RavenDB 3.5 whirl wind tour (14):
    25 May 2016 - Got anything to declare, ya smuggler?
  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