2014-06-26 80 views
8

許多科學計算語言在絕對時間(掛鐘)和CPU時間(處理器週期)之間進行了區分。例如,在Matlab我們:在Julia中測量已用CPU時間

>> tic; pause(1); toc 
Elapsed time is 1.009068 seconds. 

>> start = cputime; pause(1); elapsed = cputime - start 
elapsed = 
     0 

,並在數學,我們有:計算服務器上的基準測試代碼運行時

>>In[1]:= AbsoluteTiming[Pause[1]] 
>>Out[1]= {1.0010572, Null} 

>>In[2]:= Timing[Pause[1]] 
>>Out[2]= {0., Null} 

這種區分是非常有用的,那裏可能是在絕對定時高方差結果取決於其他進程正在同時運行。

的朱莉婭標準庫通過tic()toc()@time和其他一些功能,提供了表達的時序支持/宏都基於time_ns(),測量絕對時間的函數。

>>julia> @time sleep(1) 
elapsed time: 1.017056895 seconds (135788 bytes allocated) 

我的問題:是否有一種簡單的方法來獲取在Julia中進行表達式評估所用的CPU時間?

(附註:在做一些挖掘,似乎朱莉婭定時基於從libuvuv_hrtime()功能,在我看來,使用uv_getrusage來自相同的庫可能給的方式來訪問朱莉婭經過的CPU時間,但我不是專家,有沒有人嘗試過使用這樣的東西?)

+0

這是一個偉大的建議。請提交問題或通過電子郵件發送郵件列表(或發送拉請求,如果你有一些工作!) –

回答

5

我找不到任何現有的解決方案,所以我已經將一些簡單的CPU定時功能放在一起:https://github.com/schmrlng/CPUTime.jl。對於包的並行代碼完全未經測試,可能有其他錯誤,但如果其他人想嘗試一下調用

>> Pkg.clone("https://github.com/schmrlng/CPUTime.jl.git") 

julia>提示要安裝該軟件包。

9

朱莉婭確實有其在Matlab工作就像tictoc命令tic()toc()

julia> tic(); 7^1000000000; toc() 
elapsed time: 0.046563597 seconds 
0.046563597