reduce()--what is it good for?
JCM
joshway_without_spam at myway.com
Fri Nov 7 12:20:18 EST 2003
Alex Martelli <aleax at aleax.it> wrote:
...various good points...
> if one is in a hurry, recursion and
> memoization are obviously preferable:
> def facto(n, _memo={1:1}):
> try: return _memo[n]
> except KeyError:
> result = _memo[n] = (n-1) * facto(n-1)
> return result
> the performance numbers being:
> [alex at lancelot bo]$ timeit.py -c -s'import facs' 'facs.factorial(13)'
> 100000 loops, best of 3: 10.3 usec per loop
> [alex at lancelot bo]$ timeit.py -c -s'import facs' 'facs.fac(13)'
> 10000 loops, best of 3: 32 usec per loop
> [alex at lancelot bo]$ timeit.py -c -s'import facs' 'facs.facto(13)'
> 1000000 loops, best of 3: 1.26 usec per loop
I'm going off topic, but it's really not fair to compare a memoized
function to non-memoized implementations using a "best of 3" timing
test.
More information about the Python-list
mailing list