#/bin/bash
trap "" USR2 # USR2 is used to synchronize subprocesses
home=$(dirname $0)
save() {
cat >$fn <<EOD
RP0=$1
TS=$2
EOD
}
exi() {
echo TRAP
eval $(posun)
save $((port+n)) $(date +%s)
exit 1
}
posun() {
((n+=RN))
((n>skok)) && { ((n+=500)); ((skok+=1000)); }
echo n=$n
echo skok=$skok
}
trap exi 2
fn=$(basename $0).port
[[ -e $fn ]] || save 11000 $(date +%s)
. $fn
D=$(date +%s)-$TS
((RP0>29999)) || ((D>60)) && { RP0=11000; TS=$(date +%s); save $RP0 $TS; }
declare -a langs
langs=(Asm C C++ Java Python)
declare -A cmds times
cmds=([Asm]="csa" [C]="csc" ["C++"]="cscpp" [Java]="csj" [Python]="csp")
[[ $RUNS ]] || export RUNS=3
[[ $DEB ]] || export DEB=0
[[ $MN ]] || export MN=0
[[ $RN ]] || export RN=33 # pro python radši ne víc než 50
[[ $TTL ]] || export TTL=3333
[[ $SSL ]] || export SSL=0
echo -e DEB=$DEB\\tMN=$MN\\tRN=$RN\\tTTL=$TTL\\tSSL=$SSL
n=0; skok=500; port=$RP0
for j in $(seq $RUNS)
do
for k in "${langs[@]}"
do
export RP0=$((port+n))
times[$k]=$(/usr/bin/time -o /dev/stdout -f %U $home/${cmds[$k]})
printf "%-12s%4.2f\n" $k ${times[$k]}
eval $(posun)
done
echo
done
save $((port+n)) $(date +%s)