[Python-Dev] A new dict for Xmas?

Jim Jewett jimjjewett at gmail.com
Fri Dec 16 21:14:02 CET 2011


> Greg Ewing wrote:
>> Mark Shannon wrote:

>>> I have a new dict implementation which allows sharing of keys between
>>> objects of the same class.

>> We already have the __slots__ mechanism for memory savings.
>> Have you done any comparisons with that?

> You can't make Python programmers use slots, neither can you
> automatically change existing programs.

The automatic change is exactly what a dictionary upgrade provides.

I haven't read your patch in detail yet, but it sounds like you're
replacing the array of keys + array of values with just an array of
values, and getting the numerical index from a single per-class array
of keys.

That would normally be sensible (so thanks!), but it isn't a drop-in
replacement.  If you have a "Data" class intended to take arbitrary
per-instance attributes, it just forces them all to keep resizing up,
even though individual instances would be small with the current dict.

How is this more extreme than replacing a pure dict with some
auto-calculated slots and an "other_attrs" dict that would normally
remain empty?

[It may be harder to implement, because of the difficulty of
calculating the slots in advance ... but I don't see it as any worse,
once implemented.]

Of course, maybe your shared dict just points to sequential array
positions (rather than matching the key position) ... in which case,
it may well beat slots, though the the "Data" class would still be a
problem.

-jJ


More information about the Python-Dev mailing list