diff --git a/m1/perf/tabulate b/m1/perf/tabulate index c5d8b1b..bf43a77 100755 --- a/m1/perf/tabulate +++ b/m1/perf/tabulate @@ -45,6 +45,107 @@ eq() } +trim() +{ + sed 's/[^0-9].*//' +} + + +cfield() +{ + echo "$2" +} + + +rank() +{ + op=$1 + txt=`$2 $3 $6` + a=`echo "$txt" | trim` + b=`$2 $4 $6 | trim` + c=`$2 $5 $6 | trim` + + if [ $a $op $b -a $a $op $c ]; then + col=$green + elif [ $b $op $a -a $c $op $a ]; then + col=$red + else + col=white + fi + echo "$txt$7" +} + + +red="#ffb0b0" +green="#a0ffa0" + +html=false +if [ $1 = -h ]; then + html=true + shift +fi + +if $html; then + cat < +Scheduler comparison + + + + + + + + + + + + + + + +EOF + for n in `ls -1 data/ref/out`; do + ref=`sum ref $n` + new=`sum new $n` + opt=`sum opt $n` + same=`eq $ref $new`/`eq $ref $opt`/`eq $new $opt` + + echo "" + rank -lt time ref new opt $n + rank -lt size ref new opt $n + rank -gt eff ref new opt $n % + rank -lt regs ref new opt $n + + echo "
OriginalNew (no optimizer)New (LCPF)EquivName
TimeSizeEffRegs TimeSizeEffRegs TimeSizeEffRegs 
" + rank -lt time new ref opt $n + rank -lt size new ref opt $n + rank -gt eff new ref opt $n % + rank -lt regs new ref opt $n + + echo "" + rank -lt time opt ref new $n + rank -lt size opt ref new $n + rank -gt eff opt ref new $n % + rank -lt regs opt ref new $n + + echo "" + if [ $same = Y/Y/Y ]; then + cfield $green $same + else + cfield $red $same + fi + cfield white "$n" + done + cat < + + +EOF + exit +fi + + echo "Original New sched (no opt) New sched (LCPF) Equiv Name" echo "Time Size Eff Regs Time Size Eff Regs Time Size Eff Regs"