我在几个网站上找到了部分解决方案,所以我把几个部分放在一起,但我仍然无法理解。
这是我正在做的事情:
我正在从终端运行一个简单的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
的行。
我感谢任何帮助,如果这个问题多余或偏离主题,请道歉。
答案 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
我希望这会有所帮助。