pointless musings on performance
MRAB
python at mrabarnett.plus.com
Tue Nov 24 07:26:12 EST 2009
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.
More information about the Python-list
mailing list