使用 Unix 程序时间计算每次迭代的程序运行时间



我想用蒙特卡罗方法计算我的近似PI的程序的运行时间。我编写了一个unix shell脚本,它为程序No of points, N = 10^{k},对于k = 1,2,…7。现在我希望找到Unix程序时间中每个N的执行时间。我的unix shell脚本如下:

#!/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输入的执行时间,或者我必须在我的代码中做一些事情。

通过编写$ time ./pi.sh,您正在测量执行pi.sh所需的时间,其中包含一个循环。所以你测量所有迭代的总时间。如果您想独立地度量每个迭代,您必须在迭代的调用中放置time:

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

最新更新