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

Reply via email to