官方文档: https://docs.python.org/2/library/timeit.html
源代码片: Lib/timeit.py
该模块提供了简单的方式来测量小段Python代码片.它有两种执行方式:命令行接口执行方式 和 Python程序代码可调的函数的方式.
该模块避免了很多常见的度量时间的陷进.可以参考由O’Reilly出版的Python Cookbook里面介绍算法章节。
下面例子可以展示如果使用Command-Line Interface比较三种不同的表达式
同样可以用Python Interface来实现:
注意:模块只有用Command-Line Interface方式才会自动判断重复的次数,在详细的例子部分可以找到更多高级的例子
该模块定义了三个便利的函数和一个公共类:
用已给的语句创建一个Timer实例,setup 代码、timer函数、 运行带有number执行次数的timeit()方法.
用已给的语句创建一个Timer实例,setup 代码、timer函数、
运行带有number执行次数和repeat次数的的repeat()方法.
定义一个基于特别平台的默认的计时器,在Windwos系统,time.clock()有微妙的精度,但是time.time()只有1/60秒的精度.在Unix统,time.clock()有1/100秒的精度,而time.time()的精度更高.在任意一个平台,default_timer()度量墙上物理时钟时间.而不是CPU时间,这意味着计时时,运行在同一台计算机上的其他进程可能会中断
Note:
在计时时,默认,timeit() 临时关闭垃圾回收功能.这样做的好处是:独立计时让其更具有可比性.这样做不好的地方在于:GC也许是函数表现的一部分,必须同样要进行测试,如果这样的话,GC功能可以作为setup字符串变量的开始部分来激活,例如:
调用timeit()数次.这是一个方便的方法,可以重复调用,返回一个结果集,以列表的方式显示。第一个参数是调用timeit()次数,第二个参数是timeit()中的计时参数;
帮助打印从计时代码中的traceback,典型使用:
这样做的好处是,可以将参数file直接定位到traceback,默认是:sys.stderr.
当在命令行方式执行时,命令如下
详解如下:
语句执行的次数
语句执行的次数,默认是3次
执行时初始语句(默认是pass)
使用time.time() (默认除Windows外所有的操作系统)
使用time.clock() (默认只在Windows操作系统上执行)
打印原始计时结果;重复打印多个高精度的数字.
D:\>python -m timeit -v "‘_‘.join(str(n) for n in range(1000))"
10 loops -> 0.00329 secs
100 loops -> 0.035 secs
1000 loops -> 0.324 secs
raw times: 0.327 0.33 0.325
1000 loops, best of 3: 325 usec per loop
打印简短的使用信息并离开
它提供了setup语句,在命令行方式中,程序执行的开始
同样可以用Timer类和它们的方法来实现
下面的例子示范如果测量多行表达式的执行时间,这里主要比较 hasattr() vs try/except来测试缺省或存在两种情况下的对象属性的时间消耗.
如果想让timeit模块测量你定义的函数,可以传递一个setup参数,该参数包括一个import语句:
原文地址:http://blog.csdn.net/jerry_1126/article/details/41379601