[ZODB-Dev] Re: ZODB Benchmarks

Jim Fulton jim at zope.com
Tue Nov 6 14:51:59 EST 2007


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.

Note that this feature was added back when testing was minimal or non- 
existent, so it is untested, however, the implementation is simple  
enough.  :)  If it would, then of course we should contribute  
documentation and a test to the Python source tree.

Jim

--
Jim Fulton
Zope Corporation




More information about the ZODB-Dev mailing list