Random perf results that make me happy
Michael Yarichuk is one of the core developers of RavenDB. He is going to do a talk and a workshop on Oredev this week. And I just got his latest slides for review.
His talk is about how you can reduce your GC load and improve performance and it includes the following slide:
On the left you have RavenDB 4.0 and on the right RavenDB 3.5 running the same load under a profiler. Leaving aside that RavenDB 4.0 is much faster overall, look at the numbers. The 3.5 version spent a lot of time in GC, and a lot of that was blocking GC calls. The 4.0 version barely did any GC, and all of that was in the background.
This scenario wasn’t part of any performance work, it was to show the result of about two years of work and it is amazing to look back and understand that we can see a concrete example of the results so clearly.
Michael will be talking about some of the techniques we use to get there, so I highly recommend you come to his talk. He’ll also be doing a full day workshop on modeling data with documents.
Comments
"Ask not what can the garbage collector do for you, but what can you do for the garbage collector" - Someone on Twitter.
I'm really curious, what kind of objects are still being collected currently in Raven 4?
Pop Catalin, Strings, mostly. For example, we need to read some query strings, and that is materialized as string. There are managed objects that wrap unmanaged memory (BlittableJsonObjectReader) and the like that are very small, but they tend to have great locality and they work great with the gc.
Comment preview