zoukankan      html  css  js  c++  java
  • list类型数据执行效率测试

    测试代码如下

    from timeit import Timer
    
    
    def fun1():
        a = []
        for i in range(10000):
            li = [i]
            a = a + li
    
    
    def fun2():
        a = [i for i in range(10000)]
    
    
    def fun3():
        a = []
        for i in range(10000):
            a.append(i)
    
    
    def fun4():
        a = list(range(10000))
    
    
    def fun5():
        a = []
        for i in range(10000):
            a.extend([i])
    
    
    # fun1()
    # fun2()
    # fun3()
    # fun4()
    # fun5()
    
    time1 = Timer("fun1()", "from __main__ import fun1")
    print("time1:", time1.timeit(500))
    
    time2 = Timer("fun2()", "from __main__ import fun2")
    print("time2:", time2.timeit(500))
    
    time3 = Timer("fun3()", "from __main__ import fun3")
    print("time3:", time3.timeit(500))
    
    time4 = Timer("fun4()", "from __main__ import fun4")
    print("time4:", time4.timeit(500))
    
    time5 = Timer("fun5()", "from __main__ import fun5")
    print("time5:", time5.timeit(500))

    执行结果如下,可以发现第一种两个列表相加的方式最慢,其他几种时间差不多:

    再对比下append和insert方法的效率:

    def fun6():
        a = []
        for i in range(10000):
            a.append(i)
    
    
    def fun7():
        a = []
        for i in range(10000):
            # 插入到头部
            a.insert(0, i)
    
    
    def fun8():
        a = []
        for i in range(10000):
            # 插入到尾部
            a.insert(-1, i)
    
    
    time6 = Timer("fun6()", "from __main__ import fun6")
    print("time6:", time6.timeit(500))
    
    time7 = Timer("fun7()", "from __main__ import fun7")
    print("time7:", time7.timeit(500))
    
    time8 = Timer("fun8()", "from __main__ import fun8")
    print("time8:", time8.timeit(500))

    执行结果,插入到头部需要更新列表中后面所有数据的位置,所以最耗时:

  • 相关阅读:
    day49-线程-事件
    day48-线程-信号量
    180-spring框架开启事务的两种方式
    094-SSM框架和控制层,业务层、持久层是什么关系?
    179-当创建FileInputStream会发生什么呢?
    178-链接查询association
    177-properties文件的中文注释是会出现乱码的?
    176-@Mapper注解是什么?
    092-linux都是怎么安装文件的?
    178-什么是dns解析呢?
  • 原文地址:https://www.cnblogs.com/canghai1024/p/13807265.html
Copyright © 2011-2022 走看看