[Python-Dev] A new dictionary implementation
Steven D'Aprano
steve at pearwood.info
Mon Jan 30 00:30:14 CET 2012
Mark Shannon wrote:
> Antoine Pitrou wrote:
>> On Sun, 29 Jan 2012 09:56:11 -0500
>> Benjamin Peterson <benjamin at python.org> wrote:
>>
>>> 2012/1/29 Mark Shannon <mark at hotpy.org>:
>>>> Hi,
>>>>
>>>> Now that issue 13703 has been largely settled,
>>>> I want to propose my new dictionary implementation again.
>>>> It is a little more polished than before.
>>> If you're serious about changing the dictionary implementation, I
>>> think you should write a PEP. It should explain the new dicts
>>> advantages (and disadvantages?) and give comprehensive benchmark
>>> numbers. Something along the lines of
>>> http://www.python.org/dev/peps/pep-3128/ I should think.
>>
>> "New dictionary implementation" is a misnomer here. Mark's patch merely
>> allows to share the keys array between several dictionaries. The lookup
>> algorithm remains exactly the same as far as I've read. It's actually
>> much less invasive than e.g. Martin's AVL trees-for-hash-collisions
>> proposal.
>>
>
> Antoine is right. It is a reorganisation of the dict, plus a couple of
> changes to typeobject.c and object.c to ensure that instance
> dictionaries do indeed share keys arrays.
I don't quite follow how that could work.
If I have this:
class C:
pass
a = C()
b = C()
a.spam = 1
b.ham = 2
how can a.__dict__ and b.__dict__ share key arrays? I've tried reading the
source, but I'm afraid I don't understand it well enough to make sense of it.
--
Steven
More information about the Python-Dev
mailing list