[Python-Dev] Expression optimizations (original) (raw)
Cesare Di Mauro cesare.dimauro at a-tono.com
Tue Feb 10 21:56:52 CET 2009
- Previous message: [Python-Dev] Expression optimizations
- Next message: [Python-Dev] Expression optimizations
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Mar, Feb 10, 2009 08:15 PM, Raymond Hettinger wrote:
----- Original Message ----- From: "Cesare Di Mauro" <cesare.dimauro at a-tono.com> To: "Python-Dev" <python-dev at python.org> Sent: Tuesday, February 10, 2009 8:24 AM Subject: [Python-Dev] Expression optimizations
In peephole.c I noticed some expression optimizations: /* not a is b --> a is not b not a in b --> a not in b not a is not b --> a is b not a not in b --> a in b */ So, it seems that an operation can be changed to another one which is logically equivalent. Could it be applyable to other operations as well? So, if I wrote: c = not(a < b)_ _the compiler and/or peephole optimizer can generate bytecodes_ _instructions which, instead, execute the following operation:_ _c = a >= b Is it right? We've only done conservative transformations that do not change which magic methods get called. The is / isnot transformations are invisible to the programmer and always semantically neutral.
OK, and the same apply to the "in" operator, if I have understood correctly the other messages.
Your proposed transformation is changes which methods get called and makes assumptions that the usual relationships between comparison operators holds (but it might not given rich comparisons, for example, sets use the comparison operators for subset/superset tests).
Raymond, I'm not proposing any changes to the language.
I'm playing with the virtual machine and I have some ideas about possibile optimizations that could be applyed. But I need to verify them, so understanding what is possible and what is not, is a primary goal for me. ;)
Thanks for you patience Cesare
- Previous message: [Python-Dev] Expression optimizations
- Next message: [Python-Dev] Expression optimizations
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]