Initial impressions of UberProf

After being convinced that Ayende wouldn’t steal my data and sell it to the Russian mafia, I finally bought UberProf, and here are my initial impressions of working with it today (keep in mind this is a total of about 30 minutes of real work).

UberProf isn’t actually a single application, it is a license to use any of the four (with more on the way) existing profilers, which target NHibernate, Hibernate, Linq to SQL, and Entity Framework.

This made the obligatory “thanks for giving us your money” email more confusing, since it explained that to use the license key, I should ”Open UberProfiler” (after having downloaded it from and browse for the license key.  I’m guessing that he simply re-used a stock “thanks for giving us your money” email that really applies to the individual applications, and didn’t think to clean it up with better instructions.

The next problem I had was that I couldn’t download the Hibernate profiler.  All others downloaded just fine, but the Hibernate profiler download would either never initialize (no ‘save as’ dialog box) or hang.  I mailed Ayende about it (since I had an email thread active about UberProf anyway), and his 3G chip was working, so he responded with some confusion as, of course, the download worked on his machine.  The downloads are through Amazon AWS and neither IE nor Firefox would let me get the file.

After 30 minutes, it just started working.  The Hibernate profiler is, for me, the least important profiler of the bunch, but I paid for it, so wanted to make sure I downloaded it and at least launched it so I could register it (not that I ever lose license keys *cough*).

There are two projects that I am working on for which I purchased UberProf.  The ‘really, really close to launch if the business partner ever gets around to final steps’ project uses Linq to SQL, while the ‘very much in development’ project uses EF, so I started with the EF one.

If I ever get around to it, I might post my current use of SpecFlow, but essentially I create the UI (these are web apps) and ‘hook it up’ to my bastardized mix of quasi-cqrs and DDD-lite infrastructure, and write my specs without having any ‘real’ data access at all (I just new up whatever objects I need at the time).  Then, when I need more ‘real’ data to get the UI to look and behave more reasonably like it will in production, I create a test database, with no real consideration to schema or anything, and put something in front of it.  In this case, the ‘something’ was EFv4.

Hooking up the application to allow the EF Profiler to profile it took about 2 minutes.  You register a DLL, you add an entry to your Application_Start routine, you launch the profiler, you start using the app, and voila, the profiler be profiling. 

Since it is long before I care about profiling this app (since it is a test database used to satisfy my specs), I won’t go into much of the details, but one interesting thing I noticed is that, in a routine where I am doing naughty N+1 things in a loop, it only flags the last three selects as N+1, even though all six are identical (except for the values in the where clause).  I’m going to have to keep an eye on this.

Since the L2S project is more important and closer to production, I was encouraged enough with the ‘plug and play’ nature of the thing that I decided to plug in L2S in the same way.  2 minutes.  Register a DLL, add an entry to App_Start, launch the profiler, start using the app, and voi…..oh, damn.

Yellow screen o’ Death:

Inheritance security rules violated by type: 'HibernatingRhinos.Profiler.Appender.LinqToSql.SqlProviderProxy.InitializeProxyDefinitionAttribute'. Derived types must either match the security accessibility of the base type or be less accessible.

I wonder what the hell that means (I mean, I can read….).  So, I sent it off to the Google Support Group, since I would like to have some idea of turnaround time of using it, rather than blindly mailing Ayende.

After some more dicking around (technical term), I’ve gotten this different Yellow screen o’ Death:

Attempt by security transparent method 'HibernatingRhinos.Profiler.Appender.LinqToSql.LinqToSqlProfiler.SetupLinqToSqlIntegration()' to access security critical method 'System.AppDomain.add_AssemblyLoad(System.AssemblyLoadEventHandler)' failed.

Could be how I have IIS7 set up.  I’ll have to play around with it some more.

So, overall, the initial impression is a bit mixed (keeping in mind, again, that this about 30 minutes into it).  Not exactly frictionliess.  Since I haven’t actually been able to use it as a profiler (though that is part of the point), I have nothing to say about that part (other than the initially strange looking select N+1 alert pattern).  I’m really looking forward to using it for what it was designed for, as I know for a fact that there are parts of my data access code in the L2S project that blows.

posted on Friday, August 20, 2010 7:24 PM Print
No comments posted yet.

Post Comment

Title *
Name *
Comment *  
Please add 5 and 5 and type the answer here: