[Python-Dev] pyc files, constant folding and borderline portability issues (original) (raw)

Cesare Di Mauro cesare.dimauro at a-tono.com
Mon Apr 6 21:23:18 CEST 2009


On Mon, Apr 6, 2009 18:57, skip at pobox.com wrote:

Cesare> At this time with Python 2.6.1 we have these results: Cesare> def f(): return 1 + 2 * 3 + 4j ... Cesare> def f(): return ['a', ('b', 'c')] * (1 + 2 * 3) Guido can certainly correct me if I'm wrong, but I believe the main point of his message was that you aren't going to encounter a lot of code in Python which is amenable to traditional constant folding. For the most part, they will be assigned to symbolic "constants", which, unlike C preprocessor macros aren't really constants at all. Consequently, the opportunity for constant folding is minimal and probably introduces more opportunities for bugs than performance improvements. Skip

I can understand Guido's concern, but you worked as well on constant folding, and you know that there's space for optimizations here.

peephole.c have some code for unary, binary, and tuple/list folding; they worked fine. Why mantaining unuseful and dangerous code, otherwise?

I know that bugs can come out doing such optimizations, but Python have a good tests battery that can help find them. Obviously tests can't give us 100% insurance that everything works as expected, but they are very good starting point.

Bugs can happen at every change on the code base, but code base changes...

Cesare



More information about the Python-Dev mailing list