On Oct 31, 2007, at 7:35 AM, Roché Compaan wrote:
Thanks for the explanation.
The actual insertion is very fast. Your benchmark is dominated by the time to serialize the changes due to an insertion. You should usually have just 2 instances to serialize per insertion of a new instance: the instance itself and the b-node that points to the instance. An insertion may also cause changes in 2 or several b-nodes, but those cases are less likely. Serializing your simple instances is probably fast, but serializing the b-nodes appears to be taking much more time, and probably accounts for the large number of calls to persistent_id. B-Nodes with higher branching factors will have more parts to serialize and they will be slower. If you can cut the b-node branching factor in half, I bet your benchmark will run almost twice as fast. I think the default branching factor is large in ZODB because that can be good for fast reading. It is bad if you want fast writing. If you want fast writing, use a small branching factor. _______________________________________________ For more information about ZODB, see the ZODB Wiki: http://www.zope.org/Wikis/ZODB/ ZODB-Dev mailing list - ZODB-Dev@zope.org http://mail.zope.org/mailman/listinfo/zodb-dev