C++ 计算程序&x27;使用Unix程序时间的每个迭代的运行时
我希望用蒙特卡罗方法计算我的程序的运行时间,它近似于PI。我已经编写了一个unixshell脚本,它为程序提供了k=1,2,…7的点数N=10^{k}。 现在,我希望在Unix程序时间中找到每个N的执行时间。我的unix shell脚本如下所示: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
#!/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秒。也可能有几个小时。有关更多信息和格式选项,请参见工时
。