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