通过Fibonacci的迭代,生成器,循环三种实现,观察迭代,生成器,循环的效率。
结论:迭代效率非常低,生成器和循环相近
一下是代码和运行时间
import sys
def fibo(n):
if n < 2: return 1
else: return fibo(n-1) + fibo(n-2)
n = int(sys.argv[1])
fibo(n)
结果:
n | 运行时间
10 0.01
30 0.3
35 3.0
import sys
def fibo(n):
if n < 2: return 1
f, f0, f1 = 1, 1, 1
while n > 1:
n -= 1
f = f0 + f1
f0 = f1
f1 = f
return f
n = int(sys.argv[1])
fibo(n)
结果:
n | 运行时间
10 0.01
100000 0.2
1000000 13
import sys
def fibo(n):
a, b = 1, 1
while n > 0:
yield a
a, b = b, a + b
n -= 1
n = int(sys.argv[1])
for i in fibo(n):
pass
结果:
n | 运行时间
10 0.01
100000 0.16
1000000 13.0
原文地址:http://www.cnblogs.com/zy001/p/3982806.html