zoukankan      html  css  js  c++  java
  • 借助 timeit 模块测试不同编程方式的执行效率,以列表添加元素为例

    目标

    • 测试Python中列表操作大 O 性能。然后我们将做一些基于时间的实验来检测出每个数据结构的时间成本

    测试流程

    • 在列表的操作有一个非常常见的编程任务就是是 增加一个列表

      • 1、使用 append 方法
      • 2、+ 拼接运算符
    • 实例化一个空列表,然后将0-1000范围的数据添加到列表中。(四种方式)

    • timeit模块:该模块可以用来测试一段python代码的执行耗时/速度

    • Timer类:该类是timeit模块中专门用于测量python代码的执行速度/时长的

      原型为:class timeit.Timer(stmt='pass',setup='pass')

      • stmt参数:表示即将进行测试的代码块语句
      • setup:运行代码块语句时所需要的设置
      • timeit函数:timeit.Timer.timeit(number=1000),该函数返回代码块语句执行1000次的平均耗时

    • 代码实现

      from timeit import Timer
      
      
      def test01():
          lst = []
          for i in range(1000):
              lst.append(i)
      
      
      def test02():
          lst = []
          for i in range(1000):
              lst = lst + [i]
      
      
      def test03():
          lst = [i for i in range(1000)]
      
      
      def test04():
          lst = list(range(1000))
      
      
      if __name__ == '__main__':
          t1 = Timer('test01()', 'from __main__ import test01')
          print('test01执行1000次的平均耗时为:', t1.timeit(1000))
          
          t2 = Timer('test02()', 'from __main__ import test02')
          print('test02执行1000次的平均耗时为:', t2.timeit(1000))
          
          t3 = Timer('test03()', 'from __main__ import test03')
          print('test03执行1000次的平均耗时为:', t3.timeit(1000))
          
          t4 = Timer('test04()', 'from __main__ import test04')
          print('test04执行1000次的平均耗时为:', t4.timeit(1000))
         
      # test01执行1000次的平均耗时为: 0.10615770700000016
      # test02执行1000次的平均耗时为: 1.6049855060000002
      # test03执行1000次的平均耗时为: 0.06575727400000009
      # test04执行1000次的平均耗时为: 0.017617561000000226
      
      
      # 可以得出结论,test04的编程方式执行效率较高,平均耗时短。
      
  • 相关阅读:
    day29 Pyhton 面向对象 继承进阶
    UX&UI的介绍区别
    APP设计中“登录”按钮的高度多少才好呢?经验总结!
    新人与三年经验的交互设计师有多大的差距?
    UI设计师是混哪一块?要做什么?图文结合详解
    是时候重新审视正在流行的卡片设计趋势了!
    图表设计的介绍及指导
    完整的交互设计流程应该是怎样的?
    设计师如何用产品思维提升用户体验?
    2015年最流行的渐变技巧!
  • 原文地址:https://www.cnblogs.com/fengting0913/p/13303712.html
Copyright © 2011-2022 走看看