用于查找程序的平均运行时的脚本

时间:2011-05-13 01:34:41

标签: shell unix timer

我在几个网站上找到了部分解决方案,所以我把几个部分放在一起,但我仍然无法理解。

这是我正在做的事情:

我正在从终端运行一个简单的java程序,需要找到该程序的平均运行时间。

我正在做的是多次运行命令,查找总时间,然后将总时间除以我运行程序的次数。

我还想获取程序的输出,而不是在标准输出上显示它。

这是我当前的代码和输出。

Shell脚本:

   startTime=$(date +%s%N)
   for ((i = 0; i <  $runTimes; i++))
   do
            java Program test.txt > /dev/null
   done
   endTime=$(date +%s%N)
   timeDiff=$(( $endTime - $startTime ))
   timeAvg=$(( $timeDiff / $numTimes ))
   echo "Avg Time Taken: "
   echo $timeAvg

输出:

 ./run: line 12: 1305249784N: value too great for base (error token is "1305249784N")

第12行已关闭,因为此代码是较大文件的一部分。 第12行是评估timeDiff的行。

我感谢任何帮助,如果这个问题多余或偏离主题,请道歉。

1 个答案:

答案 0 :(得分:1)

在我的机器上,我看不到日期的%N格式是什么让你,因​​为值似乎是7个零,但它在数学中评估的数字要大得多,即1305250833570000000。你真的需要纳秒精度吗?我敢打赌,如果你只是%s,那就没事了。

否则你看起来是在正确的轨道上。

P.S。

哦,是的,小问题,

 echo "Avg Time Taken:  $timeAvg" 

是一种更简单的方法来实现所需的输出; - )

选项2.您可以一起取出日期计算,然后将循环转换为小脚本。然后你可以使用shell的内置功能

time myJavaTest.sh

会给你详细信息

real    0m0.049s
user    0m0.016s
sys     0m0.015s

我希望这会有所帮助。