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的编程方式执行效率较高,平均耗时短。
      
  • 相关阅读:
    java配置环境变量
    What Beautiful HTML Code Looks Like jessica
    Hive 快速搭建
    Apq本地工具集
    SQL:查询购买了所有指定商品的人
    NodeJs
    留存
    markdown
    微信公众号开发
    viper
  • 原文地址:https://www.cnblogs.com/fengting0913/p/13303712.html
Copyright © 2011-2022 走看看