在模块的Python文档中timeit
,我找不到timeit.timeit
从命令行运行时的输出的详细说明:
>python -m timeit "sum(range(5))"
500000 loops, best of 5: 521 nsec per loop
在上面的示例中,我知道它执行了500000次语句。但是我不知道为什么它说5最好而不是500000最好。
您能否解释“ 5个最佳”的含义?为什么不“最好的500000”?
感谢您的帮助。
从Timeit模块文档中:
default_timer()测量可能会受同一计算机上运行的其他程序的影响,因此,在需要精确计时时,最好的做法是重复计时几次并使用最佳时间。-r选项对此很有用;在大多数情况下,默认5次重复就足够了。您可以使用time.process_time()来测量CPU时间。
yihaos-mbp:~ yihao$ python3 -m timeit '"-".join(str(n) for n in range(100))'
10000 loops, best of 3: 22.3 usec per loop
yihaos-mbp:~ yihao$ python3 -m timeit '"-".join(str(n) for n in range(100))'
10000 loops, best of 3: 22.2 usec per loop
yihaos-mbp:~ yihao$ python3 -m timeit -r 1 '"-".join(str(n) for n in range(100))'
10000 loops, best of 1: 21.9 usec per loop
yihaos-mbp:~ yihao$ python3 -m timeit -r 100 '"-".join(str(n) for n in range(100))'
10000 loops, best of 100: 21.6 usec per loop
您会看到,每次执行timeit时,时机可能会有所不同,这是由于其他进程正在进行而引起的,因此重复次数越大,它获得的准确性就越高。
希望能解释您的担忧,请接受答复并投票。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句