mk wrote:
#!/usr/local/bin/python

import timeit


def pythonic():
    nonevar = None
    zerovar = 0
    for x in range(1000000):
        if nonevar:
            pass
        if zerovar:
            pass

def unpythonic():
    nonevar = None
    zerovar = 0
    for x in range(1000000):
        if nonevar is not None:
            pass
        if zerovar > 0:
            pass

for f in [pythonic, unpythonic]:
    print f.func_name, timeit.timeit(f, number=10)



# ./t.py
pythonic 2.13092803955
unpythonic 2.82064604759

Decidedly counterintuitive: are there special optimizations for "if nonevar:" type of statements in cpython implementation?

In what way is it counterintuitive? In 'pythonic' the conditions are
simpler, less work is being done, therefore it's faster.
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to