On Mar, Feb 10, 2009 08:15 PM, Raymond Hettinger wrote: > > ----- 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.
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 _______________________________________________ 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