[Python-ideas] Optimizing builtins
Cesare Di Mauro
cesare.di.mauro at gmail.com
Sun Jan 2 07:22:36 CET 2011
2011/1/1 Guido van Rossum <guido at python.org>
> On Sat, Jan 1, 2011 at 1:52 AM, Cesare Di Mauro
> > Do we consider local variable removing (due to internal optimizations) a
> > safe or unsafe operation?
> I would consider it safe unless the function locals() is called
> directly in the function -- always assuming the compiler does not see
> obvious other evidence (like a local being used by a nested function).
The problem here is that locals is a builtin function, not a keyword, so the
compiler must resort to something like the "code fork" that I showed before,
if we want to keep the correct language semantic.
> Still, I wonder if it isn't much better to try to do this using a JIT
> instead of messing with the bytecode.
Ditto for me, if a good (and not resource hungry) JIT will come.
> You'll find that the current
> compiler just really doesn't have the datastructures needed to do
> these kind of optimizations right.
Right. Not now, but something can be made if and only if it makes sense. A
JIT can make it non-sense, of course.
> Do we consider local variable values "untouchable"? Think about a locals()
> > call that return a list for a variable; lists are mutable objects, so
> > can be changed by the caller, but the internally generated bytecode can
> > on a "private" (on stack) copy which doesn't "see" the changes made due
> > the locals() call.
> Are you sure? locals() makes only a shallow copy, so changes to the
> list's contents made via the list returned by locals() should be
> completely visible by the bytecode.
> --Guido van Rossum (python.org/~guido)
Nice to know it. Reading from the doc (
http://docs.python.org/library/functions.html#locals ) it was not clear for
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Python-ideas