En Mon, 01 Feb 2010 20:05:16 -0300, Hermann Lauer <hermann.la...@iwr.uni-heidelberg.de> escribió:

while trying to optimize some unpack operations with self compiling
code I wondered howto invoke the optimization in the exec statement.
Even starting with -O or -OO yields in Python 2.5.2 the same dis.dis code, which
is appended below.

There is not much difference with -O or -OO; assert statements are removed, __debug__ is False, docstrings are not stored (in -OO). Code generation is basically the same.

My interest would be to reduce the LOAD_FAST ops of "s" with DUP_TOP on the stack
(are there hash lookups behind those ?)

No, no lookup is performed at run time. LOAD_FAST takes an integer argument, an index into the locals array. The compiler knows (by static analysis, at compile time) which names are local; those objects are stored in a C array. I've not done such microbenchmark, but using DUP_TOP instead might even be slower.

and of course to optimize the integer
arithmetics following below (removing +-0 etc).

Can't you remove it from source beforehand? (or, from `r.rra.LAST3.getter(ds=0,row=0)` since it looks like a code generator)

In general, x+0 may execute arbitrary code, depending on the type of x. Only if you could determine that x will always be an integer, you could optimize +0 away. Python (the current version of CPython) does not perform such analysis; you may investigate psyco, Unladen Swallow, ShedSkin for such things.

--
Gabriel Genellina

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to