[Python-Dev] What to intern (e.g. func_code.co_filename)?

"Martin v. Löwis" martin at v.loewis.de
Sun Feb 14 08:03:03 CET 2010


Benjamin Peterson wrote:
> 2010/2/13 Jake McGuire <mcguire at google.com>:
>> I have a local patch, but wanted to see if anyone had ideas or
>> experience weighing these tradeoffs.
> 
> Interning is really only useful because it speeds up dictionary
> lookups for identifiers. A better idea would be to just attach the
> same filename object in compiling and unmarshaling.

I would try to do the sharing during marshaling already. I agree that
the file names shouldn't be interned, though, so I propose to create a
new code TYPE_SHAREDSTRING, similar to TYPE_INTERNED. It would use the
same numbering as TYPE_INTERNED, so backreferences could continue to use
TYPE_STRINGREF.

Alternatively, a general sharing feature could be added to marshal,
sharing all hashable objects. However, before that gets added, I'd like
to see statistics how many objects get considered for sharing, and how
many back-references then get actually generated.

Regards,
Martin


More information about the Python-Dev mailing list