用于查找程序的平均运行时间的脚本
问题描述:
我在几个站点上找到了部分解决方案,所以我将几个部分放在一起,但我仍然无法弄清楚。用于查找程序的平均运行时间的脚本
下面是我在做什么:
我从终端运行一个简单的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
的行。
我很感激任何帮助,如果这个问题是多余的或无关紧要的,我很抱歉。
答
在我的机器上,我没有看到日期格式为%N
,因为该值似乎为7个零,但是它在数学上做出了一个更大的数字,即1305250833570000000
。你真的需要纳秒精度吗?我敢打赌,如果你只用%s
就可以了。
否则,你看起来是在正确的轨道上。
P.S.
噢,轻微点,
echo "Avg Time Taken: $timeAvg"
是实现您所需的输出;-)
选项2.你可以拿出日期计算都在一起,并把你的循环AA简单的方法成小剧本。然后你可以使用shell
time myJavaTest.sh
的内置功能会给你喜欢
real 0m0.049s
user 0m0.016s
sys 0m0.015s
我希望这有助于细节。
感谢您的提示。我没有使用%s,因为我需要超过几秒的精度,因为对java程序的调用需要8到15毫秒。无论如何,只需指定毫秒而不是纳秒?我喜欢使用时间函数调用测试仪的方式。我可以使用它。再次感谢。 – 2011-05-13 04:30:40
我的日期--help没有列出任何毫秒选项。我会尝试减少%s值的大小。你真的只需要字符串左边的较小的6-8个值。模数还是只是子串?或者你可以运行awk来进行数学运算,我不认为它在数字范围上会受到限制。祝你好运。 – shellter 2011-05-13 12:21:55
doah ..可能最简单的方法是将你的值转换成浮点值%s。%N,然后用awk做数学运算。此外,你不能使用可用于Java的分析?最后,如果你打算做更多这样的事情,可以通过标签基准测试和测试来发布问题。有很多人可以帮助解决这些问题。祝你好运! – shellter 2011-05-13 13:31:37