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