meter
changeset 0 5c129dd80d4f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/meter	Thu Nov 21 14:55:10 2019 +0100
@@ -0,0 +1,59 @@
+#/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)