• 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))

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

  • 相关阅读:
    DOM 高级编程笔记
    什么是目标管理?什么叫smart原则?
    HTML文档中小meta的大作用
    《javascript权威指南》基础笔记 重要
    应聘时最漂亮的回答 转
    JS在IE和Firefox之间的区别
    apply与call的用法及区别
    谈谈Ajax跨域
    《高性能网站建设指南》、《高性能网站建设进阶指南》笔记
    HTTP协议状态码详解(HTTP Status Code)
  • 原文地址:https://www.cnblogs.com/canghai1024/p/13807265.html
Copyright © 2020-2023  润新知