首页 > 代码库 > 从Fibonacci数组看迭代,生成器和循环的效率

从Fibonacci数组看迭代,生成器和循环的效率

通过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 

从Fibonacci数组看迭代,生成器和循环的效率