Hi, I've written 2 test (1 for DO4 and 1 for EF) to test performance of both with deep inheritance. You can find the results on my blog here: http://paul.sinnema.ch/?p=84 Regards Paul Sinnema Updated at 12.06.2010 6:51:22
Alex, It's funny you mention this. I've tested it with and without the prefetch. In the example I made the with prefetch was faster than the without prefetch. Regards Paul Sinnema This thread was imported from our support forum. The original discussion may contain more detailed answer. |
psulek wrote:Fine tests :-) This is the best product promotion when user(s) tests DO4 themselfs and found that DO4 is better than other similar products :-) My opinion is that DataObjects.NET is the BEST ORM framework in the world ever, like DevExpress are the UI (at least web/win) in the world, as FastReports was the best reporting engine for Delphi :-) Alex (Xtensive) wrote:I've just read the article - some facts are surprising even for me (we made some tests as well), e.g. 6MB EF queries. Most likely, all the differences related to inheritance here comes from fact we diffrently handle it:
Btw, is it possible to get source code of your test? We'd like to study the queries sent by EF here to fully understand the reasons & write more detailed blog post about this (we can do this by our own, but if there is something that already works, we'd prefer to avoid unnecessary wastes). And, certainly, I'd like to share a link to your post in DO4 blog - is this possible? Actually, that's one more reason for me to study the source code. I want to be sure everything is fully honest here, and there are no any errors... Alex (Xtensive) wrote:Few more notes: 1) Some quotes are really, err... Astonishing:
2) You should know that you can omit .Prefetch in case with DO4, if it isn't really necessary (i.e. you don't all the inherited fields). Moreover, since .Prefetch is based on IEnumerable<t>, but not IQueryable<t>, you can build prefetch sequence containing only necessary entities by filtering the original sequence and relying on already fetched properties there (type, fields and so on). 3) Most likely, DO4 will be slower on relatively small inheritance hierarchies (1...6 types): currently we don't fallback to "EF way" (= join everything). Although we're planning to add this in future - this isn't done mainly because there were no such requests. So as summary:
Alex (Xtensive) wrote:
On the other hand, lots of people would really like to see some real-life test - we know this, because ORMeter (formerly ORMBattle) is criticized for "synthetical" nature of tests there. On the other hand, lots of synthetical tests are quite meaningful as well, so I really like to see one more test here. We might try to adopt it for ORMBattle (uff, I really miss 50-hour days ;) ). psulek wrote:
true, true :-) Hi Alex, I will gladly post the sources (projects) on my blog. I'll let you know when they are available. I don't mind you linking to my blog at all. Regards Paul Sinnema
I've added the tests to my blog. At the bottom of the log entry you'll find 2 links. That might be because some lazy loading was happining without .Prefetch. > I've added the tests to my blog. At the bottom of the log entry you'll find 2 links. Thank you - we'll study them. |