meter
author hh
Thu, 21 Nov 2019 14:55:10 +0100
changeset 0 5c129dd80d4f
permissions -rwxr-xr-x
--
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
hh
parents:
diff changeset
     1
#/bin/bash
hh
parents:
diff changeset
     2
hh
parents:
diff changeset
     3
trap "" USR2		# USR2 is used to synchronize subprocesses
hh
parents:
diff changeset
     4
hh
parents:
diff changeset
     5
home=$(dirname $0)
hh
parents:
diff changeset
     6
hh
parents:
diff changeset
     7
save() {
hh
parents:
diff changeset
     8
	cat >$fn <<EOD
hh
parents:
diff changeset
     9
RP0=$1
hh
parents:
diff changeset
    10
TS=$2
hh
parents:
diff changeset
    11
EOD
hh
parents:
diff changeset
    12
}
hh
parents:
diff changeset
    13
hh
parents:
diff changeset
    14
exi() {
hh
parents:
diff changeset
    15
	echo TRAP
hh
parents:
diff changeset
    16
	eval $(posun)
hh
parents:
diff changeset
    17
	save $((port+n)) $(date +%s)
hh
parents:
diff changeset
    18
	exit 1
hh
parents:
diff changeset
    19
}
hh
parents:
diff changeset
    20
hh
parents:
diff changeset
    21
posun() {
hh
parents:
diff changeset
    22
	((n+=RN))
hh
parents:
diff changeset
    23
	((n>skok)) && { ((n+=500)); ((skok+=1000)); }
hh
parents:
diff changeset
    24
	echo n=$n
hh
parents:
diff changeset
    25
	echo skok=$skok
hh
parents:
diff changeset
    26
}
hh
parents:
diff changeset
    27
hh
parents:
diff changeset
    28
trap exi 2
hh
parents:
diff changeset
    29
fn=$(basename $0).port
hh
parents:
diff changeset
    30
[[ -e $fn ]] || save 11000 $(date +%s)
hh
parents:
diff changeset
    31
. $fn
hh
parents:
diff changeset
    32
D=$(date +%s)-$TS
hh
parents:
diff changeset
    33
((RP0>29999)) || ((D>60)) && { RP0=11000; TS=$(date +%s); save $RP0 $TS; }
hh
parents:
diff changeset
    34
declare -a langs
hh
parents:
diff changeset
    35
langs=(Asm C C++ Java Python)
hh
parents:
diff changeset
    36
declare -A cmds times 
hh
parents:
diff changeset
    37
cmds=([Asm]="csa" [C]="csc" ["C++"]="cscpp" [Java]="csj" [Python]="csp")
hh
parents:
diff changeset
    38
hh
parents:
diff changeset
    39
[[ $RUNS ]]	|| export RUNS=3 
hh
parents:
diff changeset
    40
[[ $DEB ]]	|| export DEB=0 
hh
parents:
diff changeset
    41
[[ $MN ]]	|| export MN=0
hh
parents:
diff changeset
    42
[[ $RN ]]	|| export RN=33		# pro python radši ne víc než 50
hh
parents:
diff changeset
    43
[[ $TTL ]]	|| export TTL=3333 
hh
parents:
diff changeset
    44
[[ $SSL ]]	|| export SSL=0
hh
parents:
diff changeset
    45
echo -e DEB=$DEB\\tMN=$MN\\tRN=$RN\\tTTL=$TTL\\tSSL=$SSL
hh
parents:
diff changeset
    46
hh
parents:
diff changeset
    47
n=0; skok=500; port=$RP0
hh
parents:
diff changeset
    48
for j in $(seq $RUNS)
hh
parents:
diff changeset
    49
	do
hh
parents:
diff changeset
    50
	for k in "${langs[@]}"
hh
parents:
diff changeset
    51
		do
hh
parents:
diff changeset
    52
		export RP0=$((port+n))
hh
parents:
diff changeset
    53
		times[$k]=$(/usr/bin/time -o /dev/stdout -f %U $home/${cmds[$k]})
hh
parents:
diff changeset
    54
		printf "%-12s%4.2f\n" $k ${times[$k]}
hh
parents:
diff changeset
    55
		eval $(posun)
hh
parents:
diff changeset
    56
	done
hh
parents:
diff changeset
    57
	echo
hh
parents:
diff changeset
    58
done
hh
parents:
diff changeset
    59
save $((port+n)) $(date +%s)