[ZODB-Dev] Re: ZODB Benchmarks

Roché Compaan roche at upfrontsystems.co.za
Tue Nov 6 15:17:15 EST 2007


On Tue, 2007-11-06 at 14:51 -0500, Jim Fulton wrote:
> On Nov 6, 2007, at 2:40 PM, Sidnei da Silva wrote:
> 
> >> Despite this change there are still a huge amount
> >> of unexplained calls to the 'persistent_id' method of the  
> >> ObjectWriter
> >> in serialize.py.
> >
> > Why 'unexplained'? 'persistent_id' is called from the Pickler instance
> > being used in ObjectWriter._dump(). It is called for each and every
> > single object reachable from the main object, due to the way Pickler
> > works (I believe). Maybe persistent_id can be analysed and optimized
> > for the most common cases?
> 
> Yup.
> 
> Note that there is a undocumented feature in cPickle that I added  
> years ago to deal with this issue but never got around to pursuing.   
> Maybe someone else would be able to spend the time to try it out and  
> report back.
> 
> If you set inst_persistent_id, rather than persistent_id, on a  
> pickler, then the hook will only be called for instances.  This  
> should eliminate that vast majority of the calls.

So is this as simple as modifying the following code in the
ObjectWriter:

	self._p.persistent_id = self.persistent_id

to:

	self._p.inst_persistent_id = self.persistent_id


I'll give it a go as part of my benchmarks that I'm running and report
back.

-- 
Roché Compaan
Upfront Systems                   http://www.upfrontsystems.co.za



More information about the ZODB-Dev mailing list