1、timeit模块

  • 可以用来测试某一段代码的执行速度
  • timeit.Timer(stmt=’pass’, setup=’pass’, timer=)
  • 类Timer相关参数:

    • stmt:要测试的代码块,可以是一个函数的调用 ‘ts1()’
    • setup:运行代码是需要的设置,比如 ‘from main import ts1’ 表示从当前模块中导入ts1
    • timer:定时器函数,与平台有关
    • 举例:t1=Timer(‘ts1()’,’from main import ts1’)
  • timeit.Timer().timeit(number=1000000) timeit是类中测试代码块执行速度的方法,参数number为测试次数,默认100万次,结果返回平均耗时,单位秒。

2、对list的几种创建方法进行测试

  1. from timeit import Timer
  2. def ts1():
  3. l=[]
  4. for i in range(1000):
  5. l+=[i]
  6. def ts2():
  7. l=[]
  8. for i in range(1000):
  9. l.append(i)
  10. def ts3():
  11. l=[]
  12. for i in range(1000):
  13. l.insert(0,i) #头部插入
  14. #l.insert(len(l),i) #尾插入
  15. def ts4():
  16. l=[i for i in range(1000)]
  17. def ts5():
  18. l=list(range(1000))
  19. t1=Timer('ts1()','from __main__ import ts1')
  20. print('add',t1.timeit(number=1000))
  21. t2=Timer('ts2()','from __main__ import ts2')
  22. print('append',t2.timeit(number=1000))
  23. t3=Timer('ts3()','from __main__ import ts3')
  24. print('insert',t3.timeit(number=1000))
  25. t4=Timer('ts4()','from __main__ import ts4')
  26. print('推导式',t4.timeit(number=1000))
  27. t5=Timer('ts5()','from __main__ import ts5')
  28. print('range',t5.timeit(number=1000))

执行结果

  1. add 0.0903901
  2. append 0.08012440000000001
  3. insert 0.3523162
  4. 推导式 0.0374466
  5. range 0.014912700000000001

从结果可见,创建list时,list(range(n))是最快的,而insert()是最慢的。