计算Python代码的运行时间

本文探讨了斐波那契数列的递归实现方式,并通过timeit模块和time模块对比分析了不同参数下递归函数的执行时间,揭示了递归深度增加对执行效率的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

斐波那契数列,又称黄金分割数列 [0,1,1,2,3,5,8,13,21..]

写了个递归函数, 计算第n项值 

def func(n):
    if n == 0:
        return 0
    elif n == 1:
        return 1
    else:
        return func(n-2) + func (n-1)

</pre>发现n > 30 之后,执行时间非常长,于是想知道具体的代码执行时间,</p><p><h2>方法1:timeit 模块</h2><div><pre name="code" class="plain">>>> from timeit import Timer
>>> t1 = Timer("func(30)", "from __main__ import func")
>>> t2 = Timer("func(35)", "from __main__ import func")

func 参数分别为30,35执行一次函数耗费时间,

>>> t1.timeit(1)
0.5481270925380386
>>> t2.timeit(2)
12.405652104510068

有趣的是,n 只增加了5,时间增加了20多倍。

func 参数分别为30,35执行3次函数耗费时间,timeit 如不加参数,默认运行1百万次

>>> t1.timeit(3)
1.6510642680780165
>>> t2.timeit(3)
18.92313576122126

另repeat 函数可以重复执行n次计算,并且每次计算执行n次函数调用

如执行3次t1. timeit(1) 结果
>>> t1.repeat(3, 1)
[0.5405368141019835, 0.5502100386017901, 0.5496847882153588]

方法2: time 模块

from time import clock

def func(n):
    if n == 0:
        return 0
    elif n == 1:
        return 1
    else:
        return func(n-2) + func (n-1)

if __name__ == '__main__':
    start = clock()
    print func(40)
    finish = clock()
    print (finish-start)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值