2016-09-29 73 views
1

我希望使用蒙特卡羅方法來計算我的程序的運行時間,該程序接近PI。我已經編寫了一個unix shell腳本,它爲K = 1,2,... 7提供程序No的點數N = 10^{k}。 現在我想在Unix程序時間內找到Each N的執行時間。我的UNIX shell腳本如下所示:使用Unix程序計算每次迭代的程序運行時間

#!/bin/bash 

k=1 
N=10 
while [[ k -le 7 ]] 
do 
    echo "$k N" | ./pi $N 

    ((k = k + 1)) 
    ((N = N * 10)) 
done 

現在,當我鍵入:$ time ./pi.sh,它返回我的總執行時間

 10     3.6   0.1459155902616465 
     100    3.08   0.01960555055392467 
     1000    3.104   0.01196611328551369 
    10000    3.1284   0.004199352062629202 
    100000    3.1432   0.0005116342528909465 
    1000000   3.139704   0.0006011771092076384 
    10000000   3.141432   5.113762588206346e-05 

real 0m0.583s 
user 0m0.560s 
sys  0m0.012s 

我在想,如果我必須寫一個bash腳本得到執行每N次輸入的時間或我必須在我的代碼中做一些事情。

回答

1

通過編寫$ time ./pi.sh您正在測量執行pi.sh所需的時間,pi.sh中有一個循環。所以你測量所有迭代的總時間。如果要獨立測量每次迭代,則必須將time調用迭代:

echo "$k N" | time ./pi $N 
+0

這很好用!在我得到的三個時間輸出中,哪一個表示程序運行時間? – bhjghjh

+0

「真實」是一個真正的字時間花了。當應用程序睡眠或CPU被另一個應用程序使用時,此計時器仍會打勾。 「用戶」是在用戶模式下花費的CPU時間。 「sys」是在內核模式下花費的CPU時間。 –

+0

好的,那個真正的運行時單元是什麼?如何在幾秒鐘內從unix腳本中獲取? – bhjghjh