python提供了一个timeit模块可以用来测试一小段Python代码的执行速度。
使用方法如下:
1、导入模块
imoet timeit
2、创建对象
def t1():
l = []
for i in range(1000):
l = l + [i]
timer1 = Timer("t1()", "from __main__ import t1")
其中Timer()的参数如下:
class timeit.Timer(stmt='pass', setup='pass', timer=<timer function>)
Timer是测量小段代码执行速度的类。
stmt参数是要测试的代码语句(statment);
setup参数是运行代码时需要的设置;
timer参数是一个定时器函数,与平台有关。
3、开始计时
print("concat ",timer1.timeit(number=1000), "seconds")
number参数是测试代码时的测试次数,默认为1000000次。方法返回执行代码的耗时,一个float类型的秒数。
4、使用timeit比较insert和append的运行速度
def t2():
li = []
for i in range(10000):
li.append(i)
def t5():
li = []
for i in range(10000):
li.insert(0, i)
timer2 = Timer('t2()', 'from __main__ import t2')
print("append:", timer2.timeit(number=1000))
timer5 = Timer('t5()', 'from __main__ import t5')
print("insert:", timer5.timeit(number=1000))
# append: 0.9202240769991477
# insert: 21.039387496999552
5 测时带参数的函数
import timeit
def quick_sort(alist, start, end):
"""快速排序"""
if start >= end: # 递归结束基准
return
mid = alist[start] # 设定基准元素
low = start
high = end
while low < high:
while low < high and alist[high] >= mid: # 如果该元素大于基准
high -= 1 # 不对该元素做处理,移动下标处理下一个元素
# 如果元素小于基准
alist[low] = alist[high]
while low < high and alist[low] < mid:
low += 1
# 将low指向的元素放到high的位置上
alist[high] = alist[low]
alist[low] = mid
quick_sort(alist, start, low - 1)
quick_sort(alist, low + 1, end)
li = [41, 45, 44, 2, 78, 62, 25, 34, 65]
q1 = timeit.Timer("quick_sort(li, 0, len(li) - 1)", "from __main__ import quick_sort, li")
print(q1.timeit(number=10))
6.646145666282256e-05