zoukankan      html  css  js  c++  java
  • Python下 斐波拉契数列 的时间性能分析

    没事的时候做了一个小小的测试,之前在看数据结构的时候,看到了斐波拉契数列数列的递归实现

    突然想到python中也可用解包赋值实现,即多变量赋值。然后在又在python中实现递归算法,看看两者时间性能如何,纯属好奇。

    首先在python中实现递归算法,只计算到10000即可。

    def fibci(x1,x2):
        if x2<100000:
            return fibci(x2,x1+x2)
    

    再实现非递归算法:

    def fibci1(x1,x2):
        while x2<100000:
            x1,x2=x2,x1+x2
    

    运行时间测试使用python再带的timeit包,精确度比较高。

    from timeit import Timer
    print 'Recursion:'.rjust(10),Timer('fibci(x1,x2)','from __main__ import fibci ;x1=0;x2=1').timeit()
    print 'Python:'.rjust(10),Timer('fibci1(x1,x2)','from __main__ import fibci1 ;x1=0;x2=1').timeit()

    timeit包中有个函数Timer,有两个参数,都是字符串,第一个参数是需要统计时间的代码,可以是一个函数,第二个是设置参数的值。最后再调用timeit(),该函数接收一个参数,及代码段计算的次数。默认情况是一百万。

    所以上述代码相当于执行fibci和fibci1 一百万次。时间如下:

    Recursion: 4.93287690618
       Python: 2.30019881601

    可见,使用python的多变量复制,其效率要高许多。

  • 相关阅读:
    hdu 4577 X-Boxes 大数
    hdu 4576 Robot 概率DP
    将IP地址转化为整数
    MyISAM压缩表
    yii2 模态框
    MySQL数据库设计
    foreach循环赋值问题
    实用的网站
    判断链接地址是否有效
    tp5获取配置文件信息
  • 原文地址:https://www.cnblogs.com/jianboqi/p/2853060.html
Copyright © 2011-2022 走看看