2012-03-12 49 views
2

是否有一個bash命令或一個Python庫,將花費時間來執行文件/命令?我希望能夠決定哪種語言最適合於某項任務,或者有辦法確定Python代碼A的運行速度比Python代碼B快。如果有這種方法,但這個問題不在話題中,請使用搜索字詞或其他資源留下評論。檢查執行時間的實用程序?

回答

3

是的,它被稱爲time命令。如time command arg1 arg2 arg3

此輸出3個字段,是這樣的:

real 0m0.631s 
user 0m0.154s 
sys  0m0.458s 

第一個是實際掛鐘時間。第二個是程序在用戶空間中花費了多長時間。第三個是程序花費在內核空間上的時間。

1

time

例如:

time ls -a 

給人,上市後的文件,

real 0m0.240s 
user 0m0.002s 
sys  0m0.004s 

有在資源方面有什麼跟蹤多種選擇。詳情請參閱手冊頁。

0
python -m timeit "setup" "code" 

如果你想要時間的Python代碼。適用於快速和骯髒的性能基準。

2

你可以使用timeit:

from timeit import timeit 
print timeit("function_2(arg)", "from __main__ import function_2, arg", number=5) 

注意事項:

  • from __main__ import function, argtimeit模塊訪問函數和變量在腳本中。
  • 函數和相關的參數必須作爲字符串傳遞。
  • number =運行次數[默認爲1000000]。
  • timeit返回的時間是number運行的總和......不是平均值(抓住我一次......)。
+0

雖然我沒有接受這一點,我爲此+1了。太糟糕了,我不能接受倍數。 :D謝謝! – CoffeeRain 2012-03-12 19:03:51

0

我用這個片段中,這是我在網上找到的地方,我不記得:

import atexit 
import time 
def secondsToStr(t): 
    return "%d:%02d:%02d.%03d" % \ 
     reduce(lambda ll,b : divmod(ll[0],b) + ll[1:], 
      [(t*1000,),1000,60,60]) 

line = "="*40 
def log(s, elapsed=None): 
    print line 
    print secondsToStr(time.clock()), '-', s 
    if elapsed: 
     print "Elapsed time:", elapsed 
    print line 
    print 

def endlog(): 
    end = time.clock() 
    elapsed = end-start 
    log("End Program", secondsToStr(elapsed)) 

def now(): 
    return secondsToStr(time.clock()) 

start = time.clock() 
atexit.register(endlog) 
log("Start Program")