Python 社区有句俗语: “python自己带着电池” ,别自己写计时框架。 Python 2.3 具备一个叫做 timeit 的完美计时工具可以测量python代码的运行时间。
timeit 模块
举例:
# -*- coding: utf-8 -*-
#!/bin/env python
def test1():
n=0
for i in range(101):
n+=i
return n
def test2():
return sum(range(101))
def test3():
return sum(x for x in range(101))
if __name__=='__main__':
from timeit import Timer
t1=Timer("test1()","from __main__ import test1")
t2=Timer("test2()","from __main__ import test2")
t3=Timer("test3()","from __main__ import test3")
print t1.timeit(1000000)
print t2.timeit(1000000)
print t3.timeit(1000000)
print t1.repeat(3,1000000)
print t2.repeat(3,1000000)
print t3.repeat(3,1000000)
执行结果:
tiny@tiny-desktop:~/workspace/py$ python timetest.py
7.99498915672
3.13702893257
10.6419789791[8.2126381397247314, 8.6312708854675293, 8.6079621315002441][3.3426268100738525, 3.3914170265197754, 3.5281510353088379][11.097387075424194, 10.941920042037964, 10.874698877334595]
利用time模块
利用time模块(仅作练习之用,不推荐)。 time.localtime(), time.time(), time.clock() 对比:
例:
# -*- coding: utf-8 -*-
#!/bin/env python
def test():
L=[]
for i in range(100):
L.append(i)
if __name__=='__main__':
from time import clock
start=clock()
for i in range(1000000):
test()
finish=clock()
print (finish-start)/1000000
结果:
1.749e-05
其他方法
遇到复杂的程序,有很多性能分析工具可用。比如python的标准库里的profile可以统计程序里每一个函数的运行时间,并且提供了多样化的报表。(不了解,先记下来)
参考:
联系客服