[Python-Dev] Python 3 optimizations continued...

Stefan Behnel stefan_ml at behnel.de
Fri Sep 2 19:12:21 CEST 2011


stefan brunthaler, 02.09.2011 17:55:
>> 4) Regarding inlined object references, I would expect that it's much more
>> worthwhile to speed up LOAD_GLOBAL and LOAD_NAME than LOAD_CONST. I guess
>> that this would be best helped by watching the module dict and the builtin
>> dict internally and invalidating the interpreter state after changes (e.g.
>> by providing a change counter in those dicts and checking that in the
>> instructions that access them), and otherwise keeping the objects cached.
>> Simply watching the dedicated instructions that change that state isn't
>> enough as Python allows code to change these dicts directly through their
>> dict interface.
>  [...]
> Thanks for the pointers to the dict stuff, I will take a look (IIRC,
> Antoine pointed me in the same direction last year, but I think the
> design was slightly different then),

Not unlikely, Antoine tends to know the internals pretty well.

The Cython project has been (hand wavingly) thinking about this also: 
implement our own module type with its own __setattr__ (and dict proxy) in 
order to speed up access to the globals in the *very* likely case that they 
rarely or never change after module initialisation time and that most 
critical code accesses them read-only from within functions. If it turns 
out that this makes sense for CPython in general, it wouldn't be a bad idea 
to join forces at some point in order to make this readily usable for both 
sides.

Stefan



More information about the Python-Dev mailing list