[問題] 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