借助 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的编程方式执行效率较高,平均耗时短。
抟扶摇而上者九万里