The Original Problem

Back in 2009, I discovered what I considered a fatal flaw in performance using LINQ2SQL with LINQ queries.  I published 2 very popular articles on this as well as discussed it with many of my peers and Microsoft.  At the time, I was told in no uncertain terms by Microsoft that this was an inherent problem and for many reasons I did not agree with, they would not be addressing the issue.  Well, now, more than 2 years later, Microsoft has addressed this exact issue in Entity Framework Version 5 and will be providing the exact fix that is needed!

http://peterkellner.net/2009/06/08/linq2sql-uncompiled-verses-compiled-iis-performance-aspnet/

http://peterkellner.net/2009/05/06/linq-to-sql-slow-performance-compilequery-critical/

Basically, as I discussed in these articles below, without compiling queries, the amount of time it takes to compile each one causes unacceptably slow performance.  That is, if you look at my graph (copied here)

 

image

for a simple LINQ query, you can see that compiled query can be 37x faster than a non compiled, and if you read the article further, you’ll see that not compiling queries can cause the compile itself on every execution to significantly dwarf the time it takes to actually do the complete round trip including the execution to the database.

 

Microsoft Solution Coming in Entity Framework 5

I just read on the EF blog that this fix is coming.  The full article is here:

http://blogs.msdn.com/b/adonet/archive/2012/02/14/sneak-preview-entity-framework-5-0-performance-improvements.aspx

image

From these results, it seems that Microsoft will not improved LINQ2SQL, just EF but IMHO, that’s OK.  I’m moving my LINQ2SQL projects that are still in service to EF as should all of us be. 

 

Conclusions

So, even though Microsoft kept telling me I was shouting into the wind, they totally took on behind the scenes and solved this huge problem.  Thank you Microsoft!

 

In May of 2009 I discovered some significant performance problems that I blogged about.  In summary, I had tracked it down to the issue of LINQ2SQ having to create a full expression tree on every instantiation of a LINQ2SQL query.  I’m not a compiler write kind of guy but do respect the complexity of that and doing things like building expression trees, but still this really sucked.  Using the compile syntax in LINQ2SQL is very awkward, and IMHO takes all the fun out of using LINQ2SQL.  If you don’t remember my post, here is the graph showing the evil happening.

 

image

So, what is a Microsoft MVP to do?  I complained to everyone at Microsoft I knew.  I made this my mission for about a year.  I was told time after time that the problem was hugely complicated and no one was working on making it any faster.  I just could not believe it because I felt this was such a barrier to success to LINQ2SQL type technology (now Entity Framework really) that Microsoft just could not ignore my findings.  I was actually surprised that I was the only one screaming about this.

Well, quietly, Microsoft has announced that in .Net Framework 4.5, Entity Framework will include “Auto-Compiled LINQ Queries”.  This is awesome!   When it comes out, I’ll be testing and it giving feedback.

For now, I’m a very happy camper.

 

image


© 2012 PeterKellner.net. All Rights Reserved
Follow

Get every new post delivered to your Inbox

Join other followers: