使用解释器和命令行中的timeit的时间差异

时间:2013-10-16 20:36:57

标签: python performance timeit

从口译员那里得到:

>>> timeit.repeat("-".join( str(n) for n in range(10000) ) , repeat = 3, number=10000)
[1.2294530868530273, 1.2298660278320312, 1.2300069332122803] # this is seconds 

从命令行,我得到:

$ python -m timeit -n 10000 '"-".join(str(n) for n in range(10000))'
10000 loops, best of 3: 1.79 msec per loop # this is milli second 

为什么这两种情况的时间差异会有所不同?

1 个答案:

答案 0 :(得分:8)

这两条线的测量方法并不相同。在第一个代码段中,您计算​​了计算0-1-2-...-9999。在第二个片段中,您将对字符串连接"-".join(str(n) for n in range(10000))进行计时。

此外,timeitrepeat报告时间,而CLI平均时间超过迭代次数。所以第一个代码实际上需要12.29毫秒“每个循环”。