This must be because of implementation right? Shouldn't reduce be faster since it iterates once over the list? doesnt sum first construct the list then sum it?
----------------------- >>> ================================ RESTART ================================ >>> reduce with named function: 37.9864357062 reduce with nested, named function: 39.4710288598 reduce with lambda: 39.2463927678 sum comprehension: 25.9530121845 >>> ================================ RESTART ================================ >>> reduce with named function: 36.4529584067 reduce with nested, named function: 37.6278529813 reduce with lambda: 38.2629448715 sum comprehension: 26.0197561422 >>> from timeit import Timer def add(x,y): return x+y def rednamed(lst): return reduce(add, lst) def rednn(lst): def add2(x,y): return x+y return reduce(add2, lst) def redlambda(lst): return reduce(lambda x,y:x+y, lst) def com(lst): return sum(x for x in lst) s = xrange(101) t1 = Timer('rednamed(s)', 'from __main__ import rednamed, s') t2 = Timer('rednn(s)', 'from __main__ import rednn, s') t3 = Timer('redlambda(s)', 'from __main__ import redlambda, s') t4 = Timer('com(s)', 'from __main__ import com, s') print "reduce with named function: ", t1.timeit() print "reduce with nested, named function: ", t2.timeit() print "reduce with lambda: ", t3.timeit() print "sum comprehension: ", t4.timeit() --------------------------------------- also, using range instead of xrange doesnt seem to generate a performance-penalty: >>> reduce with named function: 36.7560729087 reduce with nested, named function: 38.5393266463 reduce with lambda: 38.3852953378 sum comprehension: 27.9001007111 >>> -- http://mail.python.org/mailman/listinfo/python-list