[Python-Dev] accumulator display syntax
Alex Martelli
aleaxit at yahoo.com
Mon Oct 20 18:15:23 EDT 2003
On Monday 20 October 2003 07:21 pm, Guido van Rossum wrote:
...
> 'average' or 'sum'. Whether there is an actual gain in speed depends
> on how large the list is. You should be able to time examples like
>
> sum([x*x for x in R])
>
> vs.
>
> def gen(R):
> for x in R:
> yield x*x
> sum(gen(R))
>
> for various lengths of R. (The latter would be a good indication of
> how fast an iterator generator could run.)
with a.py having:
def asum(R):
sum([ x*x for x in R ])
def gen(R):
for x in R: yield x*x
def gsum(R, gen=gen):
sum(gen(R))
I measure:
[alex at lancelot auto]$ timeit.py -c -s'import a' -s'R=range(100)' 'a.asum(R)'
10000 loops, best of 3: 96 usec per loop
[alex at lancelot auto]$ timeit.py -c -s'import a' -s'R=range(100)' 'a.gsum(R)'
10000 loops, best of 3: 60 usec per loop
[alex at lancelot auto]$ timeit.py -c -s'import a' -s'R=range(1000)' 'a.asum(R)'
1000 loops, best of 3: 930 usec per loop
[alex at lancelot auto]$ timeit.py -c -s'import a' -s'R=range(1000)' 'a.gsum(R)'
1000 loops, best of 3: 590 usec per loop
[alex at lancelot auto]$ timeit.py -c -s'import a' -s'R=range(10000)' 'a.asum(R)'
100 loops, best of 3: 1.28e+04 usec per loop
[alex at lancelot auto]$ timeit.py -c -s'import a' -s'R=range(10000)' 'a.gsum(R)'
100 loops, best of 3: 8.4e+03 usec per loop
not sure why gsum's advantage ratio over asum seems to be roughly
constant, but, this IS what I measure!-)
Alex
More information about the Python-Dev
mailing list