Setting unrealistic goals, then exceeding them

time to read 2 min | 275 words

One of the challengimagees in RavenDB 4.0 was the fact that I wanted to do something radically different. Over the past decade, every single release of RavenDB had improved the performance of the system, usually by some significant degree.

Dreaming dreams no mortal ever dared to dream before. "THE RAVEN"   (Edgar Allan Poe)

With RavenDB 4.0, I wasn’t willing to settle for improving performance by a few percentage points. I told my team that the goal is to improve RavenDB by an order of magnitude. In other words, I want to be 10x faster across the board.

I think that if I would have told them that I wanted 25% improvements, they would have tried very hard to get there, but 10x perf boost was considered too much out there, not possible, so not worth arguing with that crazy dude.

After the RC 2 release of RavenDB we got the following message in the mailing list:

Lovin it :-) Just imported an old large database with insane indices ( don't ask ) and basically the time to import + all indices becoming none stale went from 52 min ( Raven 3.5 ) to under 1 minute.... insane.

So that is more than 52x faster, not in an arbitrary benchmark that we gamed, but a real production data and user scenario.

That single post made my day.

In a more concrete example, another user posted a comparison using Benchmark.NET of RavenDB 3.5 vs RavenDB 4.0.

Scenario

3.5

4

Improvement
LoadFullDatasets47.535            11.38             418%
LoadDocumentsCollection29.65.72517%
LoadDocumentsCollectionFiltered             4.6080.16042873%
StoreResults8.5782.32370%

And any way you want to look at this, these are awesome numbers.