python使用timeit测试/统计小段代码运行时间

 python  python使用timeit测试/统计小段代码运行时间已关闭评论
12月 232020
 

python下有个小而美的测试代码片段时间的模块timeit,使用方法如下:

比如:  “-“.join(str(n) for n in range(100))语句执行3趟,每趟10000次的时间统计如下测试:

一、 终端命令行方式:
python -m timeit -n 10000 -r 3 -v ‘”-“.join(str(n) for n in range(100))’
raw times: 0.345 0.351 0.329
10000 loops, best of 3: 32.9 usec per loop
每次执行了10000次,共执行3次,最好的1次,平均每loop是32.9 usec(32.9微秒,10000 loops,best of 3的意思是一共repeat了3次,每一次10000 loops,取最好的那一次来平均)。32.9 usec就是这一行python表达式的执行时间。

二、python模块内方式:
>>> import timeit
>>> timeit.timeit(‘”-“.join(str(n) for n in range(100))’, number = 10000)
0.3615691661834717
>>> timeit.repeat(‘”-“.join(str(n) for n in range(100))’, number = 10000, repeat=3)[0.37982702255249023, 0.3650989532470703, 0.3783681392669678]

三、jupyter note使用方式
%timeit -n 1000 -r 3 “-“.join(str(n) for n in range(100))

 

附录资料:

1. 命令行界面

命令格式: python -m timeit [-n N] [-r N] [-u U] [-s S] [-t] [-c] [-h] [语句 ...]

参数:

-n:执行次数
-r:计时器重复次数
-s:执行环境配置(通常该语句只被执行一次)
-v:打印原始时间
-h:帮助

 

2. 多行语句执行方式(注意空格)

python -m timeit ‘try:’ ‘  str.__bool__’ ‘except AttributeError:’ ‘  pass’

1000000 loops, best of 3: 1.2 usec per loop