| #!/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 |