Re: Performance comparison Q
Magnus Lie Hetland <[email protected]> Mon, 9 May 2005 21:35:58 +0200
| Newsgroups | gmane.comp.db.metakit |
|---|---|
| Message-ID | <[email protected]> |
Brian Kelley <[email protected]>: > > You can always use reduce which operators on a function of two parameters > > def f(a,b): > if b%7>3: return a+b > return a > > data = range(10) > print reduce(f, data) I did a little test of this as opposed to using the function in an ordinary while loop, and got a speedup factor of about 1.2 (with the reduce version beeing faster). You don't get that much of a speedup using reduce unless you're reducing with a built-in operator. [snip] > which will not make a temporary list. Generators are essentially > co-routines that act like iterators. Co-routines can yield execution > until the next element in the iterator is requested. Using sum > instead of reduce(operator.add... will still be faster) Yup. sum() is good. And, as far as I know, Guido is thinking about adding more functions like it (e.g., product) mainly to get people to stop using reduce() :) It's mainly a matter of readability, I guess. If you're looking for typical, plain-vanilla Python loops, the for-loop is more "pythonic" than reduce(), IMO. (If you run it with psyco you might not even get a speedup with reduce at all.) Just a penny's worth or so... ;) -- Magnus Lie Hetland Fall seven times, stand up eight http://hetland.org [Japanese proverb] _____________________________________________ Metakit mailing list - [email protected] http://www.equi4.com/mailman/listinfo/metakit