equal
deleted
inserted
replaced
|
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) |