meter
author hh
Thu, 21 Nov 2019 14:55:10 +0100
changeset 0 5c129dd80d4f
permissions -rwxr-xr-x
--

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