如何解释返回的timeit字符串

时间:2015-01-29 15:40:21

标签: python timing

以下内容:

timeit print("foo")

返回类似:100000 loops, best of 3: 2.35 µs per loop的内容。我猜100000number的{​​{1}}参数有关。我不明白timeit的含义是什么,使用的时间单位是多少?在这种情况下,它可能是微秒,但我也看到best of 3us作为单位;但是,我在文档中找不到解释。

1 个答案:

答案 0 :(得分:10)

我假设你在这里谈论Command-line interface

命令行界面首先会尝试找到合适数量的测试;它从10次运行开始,按比例增加10倍,直到总时间超过0.2秒。如果它打印 10000循环,则那是需要0.2秒或更长时间的循环次数。

3是重复计数;测试重复几次,--repeat默认为3.然后采用这3个中最快的时间。

然后将最快运行的总时间除以测试编号。数字以秒,毫秒或微秒表示,具体取决于循环的速度。一毫秒内有1000微秒,一秒钟内有1000毫秒,单位分别打印为secmsecusec

IPython有基于所有这些的%timeit命令,但如果你的话,它们会进一步缩写并使用smsus甚至ns代码足够快,需要纳秒单位大小。如果您的终端允许,us微秒单位也可以显示为µs

您可以查看Python 3.4 implementation,并将其与iPython implentation进行比较(时间显示由_format_time() function处理。