[问题] timeit 测量程式 runtime

楼主: lawrence022 (Lawrence022)   2018-02-15 21:26:03
想请问一下
我写了支程式命名为 test.py
里面只是要计算138956167218765**342048
如果我用timeit来计算这行code的时间
结果会显示几微秒(事实上,执行这支程式的时间没有这么短)
但如果我是在command line上下time指令去量test.py的runtime
time python test.py
结果是8秒多
代表timeit测得的runtime并不正确囉?
用其他算时间的function(ex. time,datetime)结果也都跟timeit一样
我想要写一个能在程式里面计算每个function的runtime
如果只能用time指令来计算的话
我只能知道这支程式总共的runtime而已
为什么timeit得到的时间会跟time指令得到的时间不同呢?
作者: uranusjr (←這人是超級笨蛋)   2018-02-15 21:34:00
timeit 只算你的 Python 程式码的执行时间, time 是从外部看整个程式的执行时间, 从你下 python 指令到 Python准备好跑你的程式中间也是要时间的; 这就和你量纸箱尺寸内外长度会不一样的道理一样, 纸箱的材质本身也会占体积要注意 time 有很多外部因素, 而且只算一次, 误差会很大老实说我不懂你迷惑的点在哪, 很明显 timeit 的结果合理在形态相同的前提下, 执行时间和计算值并没有直接关联谁教你越大就会算越久的你老实说我保证不揍他
作者: djshen (djshen)   2018-02-16 04:39:00
会不会变大你也要看什么会影响复杂度可以去github翻code Objects/longobject.c的long_pow
作者: edwar (海边的野孩子)   2018-02-16 05:04:00
你用time python时有用print显示结果吗?大数字要转换成显示的结果也会很耗时间,timeit('print(1234567**204812)',number=1)和不用print就可以看出差异,除非python算大数字时中间
作者: p2p8ppp (给我钱)   2018-02-22 14:28:00
U大好凶XDD
作者: galeondx   2018-03-06 04:43:00

Links booklink

Contact Us: admin [ a t ] ucptt.com