timeit 怎么理解输出的时间?

新手上路,请多包涵

timeit的文档中,有这个例子代码

$ python3 -m timeit '"-".join(str(n) for n in range(100))'
10000 loops, best of 3: 30.2 usec per loop
$ python3 -m timeit '"-".join([str(n) for n in range(100)])'
10000 loops, best of 3: 27.5 usec per loop
$ python3 -m timeit '"-".join(map(str, range(100)))'
10000 loops, best of 3: 23.2 usec per loop

其中,10000 loops, best of 3: 30.2 usec per loop10000 loop是怎么来的?

>>> import timeit
>>> timeit.timeit('"-".join(str(n) for n in range(100))', number=10000)
0.3018611848820001
>>> timeit.timeit('"-".join([str(n) for n in range(100)])', number=10000)
0.2727368790656328
>>> timeit.timeit('"-".join(map(str, range(100)))', number=10000)
0.23702679807320237

从上面的代码中我知道了比如第一个例子,我知道总共花了0.301秒,因此,有301861微秒(usec),总共有10000次运行"-".join(str(n) for n in range(100)),因此每一个loop花费约30.18微秒(usec)。

timeit的命令行默认是10000次的loop吗?

阅读 2.7k
1 个回答

文档上这么举例的:

$ python -m timeit -s 'text = "sample string"; char = "g"'  'char in text'
10000000 loops, best of 3: 0.0877 usec per loop
$ python -m timeit -s 'text = "sample string"; char = "g"'  'text.find(char)'
1000000 loops, best of 3: 0.342 usec per loop

也就是说,通过命令行方式执行,timeit是自动判断该循环多少次,我想应该是单次耗时越短,执行次数就多一些。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题