[ZODB-Dev] Re: ZODB Benchmarks

Godefroid Chapelle gotcha at bubblenet.be
Fri Dec 7 04:23:24 EST 2007


Godefroid Chapelle wrote:
> Jim Fulton wrote:
>>
>> On Dec 6, 2007, at 2:40 PM, Godefroid Chapelle wrote:
>>
>>> 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.
>>>> Note that this feature was added back when testing was minimal or 
>>>> non-existent, so it is untested, however, the implementation is 
>>>> simple enough.  :)
>>>
>>> Do you mean that the ZODB has enough tests now that making the change 
>>> and running the tests might already be a good proof ?
>>
>> No, I mean that pickle and cPickle lack tests for this feature.
>>
>>> Or should we be more prudent ?
>>
>> It would be nice to try this out with ZODB to see if it makes much 
>> difference.  If it does, then that would provide extra motivation for 
>> me to add the missing test.
>>
>> Roché Compaan said he would try it out, but I just realized that he 
>> might have been waiting for me.
>>
> 
> Laurent (cced) tried it today and it seems it does make a difference.
> 
> Our benchmark is running this night with bigger amount of content.
> 
> We will be back with results tomorrow.

We can measure some benefit.

For tests on a ZODB prefilled with 100k instances of an archetypes class,

update of an instance : 12% improval
insert of an instance : 15% improval

>>>> If it would,
>>>
>>> What do you mean by 'If it would' ?
>>
>> If we can measure a benefit.
>>
>> Jim

-- 
Godefroid Chapelle (aka __gotcha) http://bubblenet.be


More information about the ZODB-Dev mailing list