2016-09-29 5 views
1

私は、モンテカルロ法を使用してPIに近似するプログラムの実行時間を計算したいと考えています。私は、K = 1,2、... 7の点N = 10^{k}というプログラムにフィードするUnixシェルスクリプトを書いています。 ここで、Unixのプログラム時間で各Nの実行時間を調べたいと思います。次のように私のUNIXシェルスクリプトに見える:私が入力したときに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を実行するのに必要な時間が計測されます。これにはループがあります。したがって、すべての反復の合計時間を測定します。あなたは独立して、すべての反復を測定したい場合は、反復の呼び出しでtimeを配置する必要があります:

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

素晴らしい作品です!私が得る3つの時間出力のうち、どれがプログラム実行時間を表すか? – bhjghjh

+0

"real"は実際の単語時間です。アプリがスリープしたり、別のアプリによってCPUが使用されているときは、このタイマーはまだ変化しません。 「ユーザー」は、ユーザーモードで費やされたCPU時間です。 "sys"は、カーネルモードで費やされたCPU時間です。 –

+0

ok、実際のランタイムユニットは何ですか?どのように私はUNIXスクリプトから数秒でそれを得るのですか? – bhjghjh

関連する問題