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