python - 测量程序运行时间 + 一个对于列表的小实验
来源:互联网 发布:mox反应堆 知乎 编辑:程序博客网 时间:2024/04/30 01:53
在LeetCode的Path Sum2 点击打开链接 中,我提到了在函数传递参数为list的时候,list 与list[:]是不同的,并且list[:]看起来比较快,所以我做了一个测量这个传参过程的小实验。
首先说一下用来测量时间得timeit模块(大家可以放弃以前time模块了!)
timeit 模块定义了接受两个参数的 Timer 类。两个参数都是字符串。 第一个参数是你要计时的语句或者函数。 传递给 Timer 的第二个参数是为第一个参数语句构建环境的导入语句。 从内部讲, timeit 构建起一个独立的虚拟环境, 手工地执行建立语句,然后手工地编译和执行被计时语句。
一旦有了 Timer 对象,最简单的事就是调用 timeit(),它接受一个参数为每个测试中调用被计时语句的次数,默认为一百万次;返回所耗费的秒数。
Timer 对象的另一个主要方法是 repeat(), 它接受两个可选参数。 第一个参数是重复整个测试的次数,第二个参数是每个测试中调用被计时语句的次数。 两个参数都是可选的,它们的默认值分别是 3 和 1000000。 repeat() 方法返回以秒记录的每个测试循环的耗时列表。Python 有一个方便的 min 函数可以把输入的列表返回成最小值,如: min(t.repeat(3, 1000000)).
可以看到,我们可以直接来调用这个模块,而不需要改动函数本身的代码了。
通过使用timeit模块,我做了这个实验:
def calsum(a): sum = 0 for i in a: sum += 0 return sumdef test1(): a = range(100000) b = calsum(a[:])def test2(): a = range(100000) b = calsum(a)if __name__=='__main__': from timeit import Timer t1=Timer("test1()","from __main__ import test1") t2=Timer("test2()","from __main__ import test2") print t2.timeit(100) print t1.timeit(100) print t1.repeat(3,100) print t2.repeat(3,100)
结果:
0.8617252285230.912028072744[0.9223898608336298, 0.8713378171269057, 0.8732882160157645][0.7581851754289941, 0.7872209317441641, 0.7674599400640414]
我们可以看到结果却和LeetCode里面的不一样,list比list[:]要快,所以这是我实验有问题还是LeetCode里出现的超时不是因为这个原因?希望有大神能帮助留言解答。
0 0
- python - 测量程序运行时间 + 一个对于列表的小实验
- 程序运行时间的测量
- 程序运行时间的测量
- 测量程序的运行时间
- 程序运行时间的测量
- 程序运行时间的测量
- 测量程序运行时间
- 测量程序运行时间
- 测量程序运行时间
- 测量程序运行时间
- 测量程序运行时间的几个函数
- 测量程序运行时间的方法
- 测量程序运行时间的几个函数
- 如何测量程序的运行时间
- 测量程序运行时间的几个函数
- 测量Python代码运行的时间
- 测量Python代码运行的时间
- 测量Python代码运行的时间
- 第9课时,自测
- [leetcode]Valid Phone Numbers
- ACM 算法3-3 迷宫 程序
- fgetc fputc fgets fputs fprintf fscanf getc getchar gets putc putchar puts ungetc函数介绍
- android sdk离线安装
- python - 测量程序运行时间 + 一个对于列表的小实验
- LeetCode 191: Number of 1 Bits
- 在floodlight控制器中统计进入packed-in数量的代码
- ASP.NET AJAX Shortcut function
- 最完整的Elasticsearch 基础教程
- 字符串常量与字符串变量
- 16-Exchanger使用
- 欢迎使用CSDN-markdown编辑器
- HDFS 学习笔记