I really love performance tuning. Lately I did get a lot of opportunities to work on this favourite task, pairing with many of the members of our core development team. The first results are testable with the code in our CVS, if you know how to build db4o and how to turn the right switches:
com.db4o.Debug.useOldClassIndex = false;
com.db4o.Debug.useBTrees = true;
com.db4o.marshall.MarshallerFamily.LEGACY = false;
We have tried to document the latest progress by creating special circuits for the Poleposition open source database benchmark:
(1) The new BTree architecture will really boost performance for bigger databases with object counts between 1 and 50 million:
http://www.db4o.com/downloads/PpMonaco.pdf
(2) The new String marshaller reduces one indirection for reading and writing strings:
http://www.db4o.com/downloads/PpNurburg.pdf
(3) We are still working on the new MarshallerFamily for untyped references, for arrays and collections. The step up in speed should be quite similar to the one for strings.
Although the new functionality appears to be quite stable (it passes all regression tests) it is not online as a public build yet since we expect another slight database file format change and since we have not completed all automatic updaters (transitioning from existing database files will be seamless, you will hardly notice).
Therefore playing with the switches only makes sense for testing at this time, please don't even dare to think about using a db4o version with the above switches for anything productive or for upgrading existing databases.