NH Prof New FeatureDiffing Sessions
It is very common to use NH Prof as.. well, a profiler :-) That is, we execute a piece of code, look at the profiler output, and try to improve it.
The problem is that when you are working on big applications, a single request may perform quite a bit of work. That can make it harder to figure out the changes between the first session and the optimized session.
In order to make this easier, I added a feature that allows you to compare two sessions, see what statements were added, what were removed and what matches.
The UI to show it is only temporary, as you can probably guess, I am still considering some variation of that vs. a flat list with color codes or icons to mark matching, added and removed.
More posts in "NH Prof New Feature" series:
- (09 Dec 2010) Alert on bad ‘like’ query
- (10 Dec 2009) Filter static files
- (16 Nov 2009) Exporting Reports
- (08 Oct 2009) NHibernate Search Integration
- (19 Aug 2009) Multiple Session Factory Support
- (07 Aug 2009) Diffing Sessions
- (06 Aug 2009) Capturing DDL
- (05 Aug 2009) Detect Cross Thread Session Usage
- (22 May 2009) Detecting 2nd cache collection loads
- (15 May 2009) Error Detection
- (12 May 2009) Queries by Url
- (04 Feb 2009) View Query Results
- (18 Jan 2009) Superfluous <many-to-one> update
- (18 Jan 2009) URL tracking
- (10 Jan 2009) Detecting distributed transactions (System.Transactions)
- (06 Jan 2009) The Query Cache
- (05 Jan 2009) Query Duration
- (24 Dec 2008) Unbounded result sets
- (24 Dec 2008) Row Counts
Comments
you could use a user definable diff tool, e.g diffmerge.
You could take a look at mercurial how it handles this scenario. Most users of NHProf will have a diff tool installed anyway
Great feature. Can't wait to try it. But using a diff tool is a horrible idea.
Why is a diff tool a horrible idea?
if i have a short diff in NHProf (the +/- thing) but can also have a detailed, fullscreen diff for long queries, that would be nice imho
An integrated structural diff would be nice to have. It doesn't need to use an external text-based program.
To get a head start, feel free to grab the Diff implementation from Gallio and repurpose it to diff arbitrary sequences of objects instead of strings of characters. ( code.google.com/.../Diff.cs)
OTOH, when diffing profile runs it might be less interesting which order statements execute as the number of time statements of a given kind execute. So it's possible a structural diff would actually be worse for usability sometimes.
Oops, the interesting diff code is actually here: code.google.com/.../DiffSet.cs
Comment preview