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

  • 相关阅读:
    初探Remoting双向通信(三)
    MySQL主从复制
    MySQL锁机制
    mySql索引
    连接池
    JDBC
    数据库建表、约束、索引
    Oracle和SQL简介
    Stream API 和 注解
    lambda表达式
  • 原文地址:https://www.cnblogs.com/jianboqi/p/2853060.html
Copyright © 2011-2022 走看看