pickle currently puts tuples into the memo on pickling, but only ever uses the position field ([0]), never the object itself ([1]).
I understand that the reference to the object is needed to keep it alive while pickling.
Unfortunately, this means one needs to allocate 36 bytes for the tuple.
I think this memory consumption could be reduced by saving the objects in a list, and only saving the position in the memo dictionary. That would save roughly 32 bytes per memoized object, assuming there is no malloc overhead.
What do you think?
Is it worth it? Have you made a patch? What use case are you thinking of?
Regards, Martin
P.S. It would be even more efficient if there was an identity dictionary.
Sorry, what's an identity dict? --Guido van Rossum (home page: http://www.python.org/~guido/)