blob: 33b0a2ac6314c90a51ea9a2a0c6480aa036b7f7c [file] [log] [blame]
#!/bin/sh
#
# Program: RunSafelyAndStable.sh
#
# Synopsis: This script runs another program three times by repeatedly
# invoking the RunSafely.sh script. It collects the timings of
# the program and reports the smallest one. The <outfile>.time
# file will reflect the time and result code of the fastest
# run.
#
# Syntax:
# ./RunSafelyAndStable.sh <ulimit> <exitok> <infile> <outfile> \
# <program> <args...>
#
# See the RunSafely.sh script for more details.
#
DIR=${0%%`basename $0`}
ULIMIT=$1
EXITOK=$2
INFILE=$3
OUTFILE=$4
PROGRAM=$5
shift 5
# Run it the first time
${DIR}/RunSafely.sh $ULIMIT $EXITOK $INFILE $OUTFILE $PROGRAM $*
exitval=$?
mv $OUTFILE.time $OUTFILE.time1
TIME1=`grep program $OUTFILE.time1 | sed 's/^program//'`
echo "Program $PROGRAM run #1 time: $TIME1"
# Run it the second time
${DIR}/RunSafely.sh $ULIMIT $EXITOK $INFILE $OUTFILE $PROGRAM $*
mv $OUTFILE.time $OUTFILE.time2
TIME2=`grep program $OUTFILE.time2 | sed 's/^program//'`
echo "Program $PROGRAM run #2 time: $TIME2"
# Run it the third time
${DIR}/RunSafely.sh $ULIMIT $EXITOK $INFILE $OUTFILE $PROGRAM $*
mv $OUTFILE.time $OUTFILE.time3
TIME3=`grep program $OUTFILE.time3 | sed 's/^program//'`
echo "Program $PROGRAM run #3 time: $TIME3"
# Figure out which run had the smallest run time:
SHORTEST=`echo -e "$TIME1 time1\n$TIME2 time2\n$TIME3 time3" | sort |
head -1 | sed "s|.*time||"`
echo "Program $PROGRAM run #$SHORTEST was fastest"
cp $OUTFILE.time$SHORTEST $OUTFILE.time
exit $exitval