Mel Wilson wrote:
> The�thing�is,�that�once�you�drop�local-namespace
> optimization, the entire function gets slowed down, possibly
> by 40%:
It's not that bad as most of the extra time is spend on compiling the
string.
def fib5(n):
a, b, i = 0, 1, n
while i > 0:
a, b = b, a+b
yield a
i -= 1
def fib6(n):
exec "a, b, i = 0, 1, n"
while i > 0:
a, b = b, a+b
yield a
i -= 1
def fib7(n, c=compile("a, b, i = 0, 1, n", "<nofile>", "exec")):
exec c
while i > 0:
a, b = b, a+b
yield a
i -= 1
[Python 2.3]
$ timeit.py -s"from fib import fib5 as fib" "list(fib(100))"
10000 loops, best of 3: 143 usec per loop
$ timeit.py -s"from fib import fib6 as fib" "list(fib(100))"
10000 loops, best of 3: 208 usec per loop
$ timeit.py -s"from fib import fib7 as fib" "list(fib(100))"
10000 loops, best of 3: 151 usec per loop
Peter
--
http://mail.python.org/mailman/listinfo/python-list