----- Original Message ----- From: "Cesare Di Mauro" <cesare.dima...@a-tono.com>
To: "Python-Dev" <python-dev@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. 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
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to