pointless musings on performance
Chris Rebert
clp2 at rebertia.com
Tue Nov 24 07:43:50 EST 2009
On Tue, Nov 24, 2009 at 4:31 AM, Rob Williscroft <rtw at freenet.co.uk> wrote:
> mk wrote in news:mailman.915.1259064240.2873.python-list at python.org in
> comp.lang.python:
>
>>
>> def pythonic():
>
>> def unpythonic():
>
>
>> Decidedly counterintuitive: are there special optimizations for "if
>> nonevar:" type of statements in cpython implementation?
>>
>
> from dis import dis
>
> dis( unpythonic )
>
> 18 31 LOAD_FAST 0 (nonevar)
> 34 LOAD_CONST 0 (None)
> 37 COMPARE_OP 9 (is not)
> 40 JUMP_IF_FALSE 4 (to 47)
>
> dis( pythonic )
>
> 11 31 LOAD_FAST 0 (nonevar)
> 34 JUMP_IF_FALSE 4 (to 41)
In other words, CPython doesn't happen to optimize `if nonevar is not
None` as much as it theoretically could (which would essentially
require a JUMP_IF_NONE opcode). Since CPython isn't known for doing
fancy optimizations, this isn't surprising.
Cheers,
Chris
--
http://blog.rebertia.com
More information about the Python-list
mailing list