| #!/bin/bash |
| |
| x=`which dwarf-goodness` |
| y=`which optargorder` |
| z=`which nostmt` |
| tmp=tmp-bench-dwarf-$$ |
| bench=no |
| |
| # make it exist so it can be removed |
| cat /dev/null > $tmp |
| |
| # Measures fraction of input variables to lines that are present |
| if [ "x$x" = "x" ] ; then |
| echo "Can get dwarf-goodness command with 'go get github.com/dr2chase/dwarf-goodness/cmd/dwarf-goodness'" |
| else |
| dwarf-goodness "$1" > $tmp |
| # has format #inputs, #present, ratio, difference |
| inputsquality=`tail -1 $tmp | awk 'BEGIN {FS=","} {print $3}'` |
| echo "tmp dwarf line quality wc = " `wc -l $tmp` |
| bench=yes |
| fi |
| |
| # Measures fraction of function arguments that are present at function entry |
| if [ "x$y" = "x" ] ; then |
| echo "Can get optargorder command with 'go get github.com/dr2chase/optargorder'" |
| else |
| optargorder "$1" > $tmp |
| # has format nFunctions,argumentError,mixedRegMem,regReuse,tooManyPieces,missingSource,wrongOrder,missingDwarf,duplicated,1-totalErrors/nFunctions |
| argsquality=`tail -1 $tmp | awk 'BEGIN {FS=","} {print $10}'` |
| echo "tmp dwarf args quality wc = " `wc -l $tmp` |
| bench=yes |
| fi |
| |
| # Measures fraction of lines mentioned in dwarf that are tagged as "is_stmt" |
| if [ "x$z" = "x" ] ; then |
| echo "Can get nostmt command with 'go get github.com/dr2chase/nostmt'" |
| else |
| nostmt -c "$1" > $tmp |
| # has total,nostmt,1-nostmt/total |
| stmtquality=`tail -1 $tmp | awk 'BEGIN {FS=","} {print $3}'` |
| echo "tmp stmt args quality wc = " `wc -l $tmp` |
| |
| nostmt -c -k "$1" > $tmp |
| # has total,nostmt,1-nostmt/total |
| stmtkindquality=`tail -1 $tmp | awk 'BEGIN {FS=","} {print $3}'` |
| echo "tmp stmt args kind quality wc = " `wc -l $tmp` |
| |
| bench=yes |
| fi |
| |
| if [ ${bench} = "yes" ] ; then |
| echo "goos: $GOOS" |
| echo "goarch: $GOARCH" |
| echo "pkg:" # Erase any inherited pkg if files are concatenated |
| if echo $inputsquality | egrep -q '[.0-9]+' ; then |
| echo Unit inputs-quality assume=exact |
| echo "Benchmark${2}_dwarf_input_goodness" 1 ${inputsquality} inputs-quality |
| fi |
| if echo $argsquality | egrep -q '[.0-9]+' ; then |
| echo Unit args-quality assume=exact |
| echo "Benchmark${2}_dwarf_args_goodness" 1 ${argsquality} args-quality |
| fi |
| if echo $stmtquality | egrep -q '[.0-9]+' ; then |
| echo Unit stmts-quality assume=exact |
| echo "Benchmark${2}_dwarf_stmt_goodness" 1 ${stmtquality} stmts-quality |
| # echo "Benchmark${2}_dwarf_stmt_goodness_kind" 1 ${stmtkindquality} stmts-quality |
| fi |
| fi |
| |
| rm $tmp |