timeit
性能分析timeit模块
1.1基本用法
导入
import timeit
或:from timeit import timeit
或:from timeit import Timer
看执行1000次x=10的时间:
timeit('x=10')
看x=10的执行时间,执行1000次(number可以省略,默认值为1000000):
timeit('x=10', number=1000)
看一个列表生成器的执行时间,执行1000次:
timeit('[i for i in range(10000)]', number=1000)
def funct():
index = 0
for i in range(1000):
index += i
t = Timer('funct()', 'from __main__ import funct', number=1000)
print(t.timeit)
def funct():
index = 0
for i in range(1000):
index += i
print(index)
# timeit(函数名_字符串,运行环境_字符串,number=运行次数)
t = timeit('funct()', 'from __main__ import funct', number=1000)
1.2 进阶
repeat和timeit用法相似,只是多了一个repeat参数,表示重复测试的次数(也可以不写,默认值为3.),
返回值为一个时间的列表。
from timeit import repeat
def funct():
index = 0
for i in range(1000):
index += i
print(index)
t = repeat('funct()', 'from __main__ import func', number=100, repeat=10)
由于程序不可能总高效执行
2.应用
class timeit.Timer(stmt='pass', setup='pass', timer=<timer function>)
Timer是测量小段代码执行速度的类。
stmt参数是要测试的代码语句(statment);
setup参数是运行代码时需要的设置;
timer参数是一个定时器函数,与平台有关。
timeit.Timer.timeit(number=1000000)
from timeit import Timer
def test1():
l = []
for i in range(1000):
l = l + [i]
def test2():
l = []
for i in range(1000):
l.append(i)
def test3():
l = [i for i in range(1000)]
def test4():
l = list(range(1000))
from timeit import Timer
t1 = Timer("test1()", "from __main__ import test1")
print("concat ",t1.timeit(number=1000), "seconds")
t2 = Timer("test2()", "from __main__ import test2")
print("append ",t2.timeit(number=1000), "seconds")
t3 = Timer("test3()", "from __main__ import test3")
print("comprehension ",t3.timeit(number=1000), "seconds")
t4 = Timer("test4()", "from __main__ import test4")
print("list range ",t4.timeit(number=1000), "seconds")
list内置操作的时间复杂度
dict内置操作的时间复杂度