Python timeit模块-获得最快和最慢的循环
我想用Python的timeit模块做一些基准测试。有没有办法让timeit返回1000个循环中最慢和最快的循环的时间?代码很容易破解。您应该能够复制Python timeit模块-获得最快和最慢的循环,python,python-2.7,timeit,Python,Python 2.7,Timeit,我想用Python的timeit模块做一些基准测试。有没有办法让timeit返回1000个循环中最慢和最快的循环的时间?代码很容易破解。您应该能够复制timeit.py,将其保存到my_timeit.py,稍微编辑它,然后将其用作新模块 你可以在上面看到timeit.pydoesbest=min(r);您可以添加bast=max(r)并编辑下面的打印语句。代码非常容易破解。您应该能够复制timeit.py,将其保存到my_timeit.py,稍微编辑它,然后将其用作新模块 你可以在上面看到tim
timeit.py
,将其保存到my_timeit.py
,稍微编辑它,然后将其用作新模块
你可以在上面看到
timeit.pydoesbest=min(r)
;您可以添加bast=max(r)
并编辑下面的打印语句。代码非常容易破解。您应该能够复制timeit.py
,将其保存到my_timeit.py
,稍微编辑它,然后将其用作新模块
你可以在上面看到timeit.pydoesbest=min(r)
;您可以添加best=max(r)
并编辑下面的打印语句。使用该函数而不是返回时间列表的timeit
。使用该函数而不是返回时间列表的timeit
。timeit
返回“三选一”即。,有两个参数:一个指定循环中的迭代次数,另一个指定重复循环的次数。传递给min()
的结果是每个循环的时间,而不是循环的每次迭代的时间
重复循环的目的是排除来自同一系统上其他进程的影响——来自文档(help('timeit')
):
当需要精确计时时,最好的做法是重复
计时几次,并使用最佳时间。r选项很好
为此,;在大多数情况下,默认的3次重复可能就足够了
案例
重复测量1000次是没有意义的。您可能打算为单个循环指定1000次迭代(默认值为1000000)
只有最快的循环(最短时间)才有用——从help('timeit.Timer.repeat')
:
注:计算平均值和标准偏差很有诱惑力
结果向量并报告这些结果。然而,这不是很有用。在里面
典型情况下,最低值给出了速度的下限
机器可以运行给定的代码段结果中的更高值
向量通常不是由Python速度的变化引起的,而是
由于其他进程干扰您的计时精度。因此
结果的min()可能是您应该输入的唯一数字
对……感兴趣。然后,你应该看看整个向量,然后
应用常识而不是统计。重点是我的
i、 例如,最慢的循环表示有多少其他过程会干扰测量
#!/usr/bin/env python
import timeit
def your_function():
"do something"
t = timeit.Timer(your_function)
# repeat 10 times, 1000000 times through the loop
repeat, number = 10, 1000000
r = t.repeat(repeat, number)
best, worse = min(r), max(r)
print("{number} loops, best of {repeat}: {best:.3g} seconds per loop, "
"worse of {repeat}: {worse:.3g} seconds per loop".format(**vars()))
timeit
返回“三选一”即有两个参数:一个参数指定循环中的迭代次数,另一个参数指定重复循环的次数。传递给min()
的结果是每个循环的时间,而不是循环的每次迭代的时间
重复循环的目的是排除来自同一系统上其他进程的影响——来自文档(help('timeit')
):
当需要精确计时时,最好的做法是重复
计时几次,并使用最佳时间。r选项很好
为此,;在大多数情况下,默认的3次重复可能就足够了
案例
重复测量1000次是没有意义的。您可能打算为单个循环指定1000次迭代(默认值为1000000)
只有最快的循环(最短时间)才有用——从help('timeit.Timer.repeat')
:
注:计算平均值和标准偏差很有诱惑力
结果向量并报告这些结果。然而,这不是很有用。在里面
典型情况下,最低值给出了速度的下限
机器可以运行给定的代码段结果中的更高值
向量通常不是由Python速度的变化引起的,而是
由于其他进程干扰您的计时精度。因此
结果的min()可能是您应该输入的唯一数字
对……感兴趣。然后,你应该看看整个向量,然后
应用常识而不是统计。重点是我的
i、 例如,最慢的循环表示有多少其他过程会干扰测量
#!/usr/bin/env python
import timeit
def your_function():
"do something"
t = timeit.Timer(your_function)
# repeat 10 times, 1000000 times through the loop
repeat, number = 10, 1000000
r = t.repeat(repeat, number)
best, worse = min(r), max(r)
print("{number} loops, best of {repeat}: {best:.3g} seconds per loop, "
"worse of {repeat}: {worse:.3g} seconds per loop".format(**vars()))