Blog
Show Blogger Panel Hide Blogger Panel

Tuesday, November 10, 2009

New posts in blogs

Wednesday, September 30, 2009

New posts in blogs

My blog:
Dmitri Maximov's blog:

Monday, September 21, 2009

New posts in blogs

In my blog:
In Dmitry Maximov`s blog:

Thursday, September 17, 2009

New posts in Dmitri Maximov's blog

See:

New posts in my blog: "Static field access performance", "NLog", etc.

See:

Friday, September 11, 2009

Implementing LINQ in ORM, part 1. No SQL DOM = no LINQ.

See http://blog.alexyakunin.com/2009/09/implementing-linq-in-orm-part-1-no-sql.html.

Personal blogs

Guys, take a look at:
  • blog.alexyakunin.com - I just published a large post about myself there ;) I stolen design from this blog for now, but shortly it will be a bit different.
  • dmitrimaximov.blogspot.com - there are two posts about persistent interfaces and finding references to specified objects.
As you suspect, this blog shortly will be a history. I'm thinking what to do with it. Likely, there will be an aggregated feed of posts related to DataObjects.Net. Another option is to simply make it obsolete. Let's see.
What's more important is that these two blogs will be definitely alive. You can subscribe to my blog right now - I already redirected its feed to my FeedBurner account. I'm not sure about Dmitry's blog, so please wait with this. We'll announce when it will be fully ready for subscriptions here.

Wednesday, September 09, 2009

Use SyntaxHighlighter

Just installed Alex Gorbatchev's syntax highlighter to this blog - it works perfectly. Earlier we've been using it on code.ormbattle.net, and it worked perfectly.

So if you have your own blog or wiki where you're going to publish some code, this is what I recommend to install first. See its integration page - it can be added to almost any known engine with ease.

null.MethodCall(...) issue on Memory storage

The problem: this code works differently on Memory and SQL storages.
var query =
from c in Query<Person>.All
where c.FirstName.ToLower()=="alex"
select c;
foreach (var c in query)
Console.WriteLine(c.FirstName);
The reason is pretty simple: we don't replace method calls on primitive types to their versions performing null checks while compiling the query for Memory storage. So if this code will be executed on IMDB, it has a chance to fail with NullReferenceException in FilterProvider iterator.

Currently you can workaround this issue by e.g. this code:
var query =
from c in Query<Person>.All
where (c.FirstName ?? string.Empty).ToLower()=="alex"
select c;
foreach (var c in query)
Console.WriteLine(c.FirstName);
But as you might suspect, this can affect on query plans in SQL. So better option is to make DataObjects.Net to handle this. That's exactly what we're going to implement in the near future.

Tuesday, September 08, 2009

Thoughts about EntitySet performance (continuing the previous post)

Facts:
- We can materialize ~ 2-3K queries per second, when each of them is fetching 50 entities. Our ORMBattle.NET tests show this. Of course, this result was measured on our moderate test PC.
- 90-95% of EntitySet content load time is spent on such a query. Everything else there happen quite fast: mainly, we put Keys of fetched Entities to internal dictionary. Since their hash code is already computed and cached at this moment, this happens quite fast.

Conclusions:
- We can load about 2000...3000 EntitySets per second.
- Thus Fabio's test must pass on DO in several seconds on our test PC. It will take a bit longer to materialize entities there in comparison to ORMBattle.NET tests, because they're a bit more complex than Simplest instances we used there. But since we must load just ~ 2500 EntitySets, this must require less than 10 seconds. NHibernate completes it in 24 seconds, but on different PC.

Far going conclusion: likely, we can win NHibernate on this test even without upcoming preloading ;)

We will try to find a time to implement this test for DO4 further. I'm really curious if this is true.