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的多变量复制,其效率要高许多。

  • 相关阅读:
    Jmeter安装与环境部署
    BVT & BAT (版本验证测试和版本验收测试)
    测试计划(Test Plan)
    小米8se从miui12降级刷机手记
    网络传输---HttpURLConnection
    mybatis 中 foreach collection的三种用法
    XStream--java对象与xml形式文件相互转换
    idea问题总结记录
    ssh框架配置过程
    ssm框架配置过程
  • 原文地址:https://www.cnblogs.com/jianboqi/p/2853060.html
Copyright © 2011-2022 走看看