*mouth agape*

Wow. That really sucks. I make extensive use of reduce. It seems to run more 
than twice as fast as a for loop.

>>> t = Timer('bino.reduceadd(bino.bits)', 'import bino')
>>> s = Timer('bino.loopadd(bino.bits)', 'import bino')
>>> t.timeit(10)
1.2373670396656564
>>> s.timeit(10)
2.6450051612705039
>>> t.timeit(100)
11.312374896809501
>>> s.timeit(100)
25.817132345032689

where

bits = map(lambda x:randint(0,1), xrange(1000000))

def reduceadd(v):
        return reduce(add, v)

def loopadd(v):
        sum = 0
        for x in v:
                sum = add(sum, x)
        return sum



(Yes, I know there are better ways to sum up a list, but I just wanted to test 
the performance of the loop against reduce. In most of my reduce usages, the 
function passed to reduce is much more complex.)
-j


[EMAIL PROTECTED] wrote:
> Jason Nordwick:
>> Stargaming wrote:
>>> Also note that reduce will be removed in Python 3000.
>> What will replace it?
> 
> Nothing, I presume. You will have to write a function to find another
> way to solve problems.
> 
> Bye,
> bearophile
> 

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to