鍍金池/ 問答/Python  網(wǎng)絡(luò)安全  HTML/ timeit 怎么理解輸出的時間?

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次運(yùn)行"-".join(str(n) for n in range(100)),因此每一個loop花費(fèi)約30.18微秒(usec)。

timeit的命令行默認(rèn)是10000次的loop嗎?

回答
編輯回答
嘟尛嘴

文檔上這么舉例的:

$ 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

也就是說,通過命令行方式執(zhí)行,timeit是自動判斷該循環(huán)多少次,我想應(yīng)該是單次耗時越短,執(zhí)行次數(shù)就多一些。

2017年3月10日 17:20