无法理解 timeit 输出

Cannot understand timeit output

我的问题是:

>>> 999 in list(xrange(1000))
True # this takes a glimpse

改为:

>>> import timeit
>>> timeit.timeit('999 in list(xrange(1000))')
26.88947892189026

为什么timeit输出这么高?

谢谢

因为它这样做 100 万次 !
https://docs.python.org/3.4/library/timeit.html#timeit.timeit


timeit.timeit 采用位置参数 number,默认为 1.000.000,因此与仅执行一次相比,执行 100 万次语句确实需要更长的时间。

如果你这样做 1 次,速度会更快:

In [2]: timeit.timeit('999 in list(xrange(1000))')
Out[2]: 31.733104944229126

In [3]: timeit.timeit('999 in list(xrange(1000))', number=1)
Out[3]: 4.5061111450195312e-05
timeit.timeit(stmt='pass', setup='pass', timer=<default timer>, number=1000000)

愚蠢的问题,语句的默认执行次数是一百万次...我之前应该读过timeit doc...

>>> timeit.timeit('999 in list(xrange(1000))', number=1)
9.083747863769531e-05