Linux shell——计算程序运行时间

基本思路:分别在程序开始运行和运行结束时打印系统时间,保存在time.txt中。

echo "starttime: `date +"%Y-%m-%d %H:%M:%S"`" > time.txt

xxxxxx  #主程序

echo "endtime: `date +"%Y-%m-%d %H:%M:%S"`" >> time.txt

对开始和结束时间求差值,得到程序运行时间:

###runtime.sh

start=`awk '{print $2,$3}' time.txt | sed -n '1p'` 
end=`awk '{print $2,$3}' time.txt | sed -n '2p' `
echo $start
echo $end

starttime=$(date -d "$start" +%s) #转化为系统时间
endtime=$(date  -d "$end"  +%s)
runtime=$(($endtime-$starttime))  #计算程序运行时间
echo $runtime

程序运行结果:

[li@localhost runtime]$ sh runtime.sh
2020-05-25 12:30:06
2020-05-25 13:20:48
3042
[li@localhost runtime]$ 

更进一步,如果是多个程序同时运行,最后要求平均的运行时间,应该怎么做呢?

基本思路:创建数组,存储每个程序的运行时间,之后求平均值,具体代码实现如下:

startnum=1
endnum=3
circuit='c100'
runtime=( ) 
for((i=$startnum;i<=$endnum;i++))
do
cat "/home/data/"$circuit"/test_"$i"/time.txt" >time.txt
start=`awk '{print $2,$3}' time.txt | sed -n '1p'` 
end=`awk '{print $2,$3}' time.txt | sed -n '2p' `
starttime=$(date -d "$start" +%s)
endtime=$(date  -d "$end"  +%s)
time=$(($endtime-$starttime))
runtime=("${runtime[@]}"  $time)
done

sum=0
for((i=0;i<$endnum;i++))
do
let sum=sum+${runtime[$i]}  #求数组元素和
done
total=${#runtime[@]}
echo "$sum/$total" | bc > runtime.txt #求数组元素平均值

版权声明:本文为qq_36480087原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。