C++ 计算程序&x27;使用Unix程序时间的每个迭代的运行时

C++ 计算程序&x27;使用Unix程序时间的每个迭代的运行时,c++,bash,shell,unix,runtime,C++,Bash,Shell,Unix,Runtime,我希望用蒙特卡罗方法计算我的程序的运行时间,它近似于PI。我已经编写了一个unixshell脚本,它为程序提供了k=1,2,…7的点数N=10^{k}。 现在,我希望在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 现在,当我键入:$ti

我希望用蒙特卡罗方法计算我的程序的运行时间,它近似于PI。我已经编写了一个unixshell脚本,它为程序提供了k=1,2,…7的点数N=10^{k}。 现在,我希望在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所需的时间,pi.sh中有一个循环。因此,您可以测量所有迭代的总时间。如果您想独立地度量每个迭代,您必须在迭代调用中放入
时间

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

太棒了!在我得到的三个时间输出中,哪一个表示程序运行时?“real”是一个real单词time。当应用程序休眠或CPU被另一个应用程序使用时,此计时器仍会滴答作响。“用户”是在用户模式下花费的CPU时间。“sys”是在内核模式下花费的CPU时间。好的,那个真正的运行时单位是什么?如何从unix脚本中以秒为单位获得它?时间实用程序的输出中给出了单位:
0m0.583s
表示0分0.583秒。也可能有几个小时。有关更多信息和格式选项,请参见
工时