[Python-Dev] pyc files, constant folding and borderline portability issues
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
> 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,
> 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.
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
Bugs can happen at every change on the code base, but code base changes...
More information about the Python-Dev