#!/bin/bash top=`dirname $0`/.. eg=$top/eg model=$top/test/model case "$1" in -*) sz="$1" shift ;; esac diff-() { $1 $sz | diff -rud $model/$2$sz.out - || exit 1 } update-diff-() { $1 $sz > $model/$2$sz.out } tym() { /usr/bin/time -f%e "$@" } spc() { /usr/bin/time -f%M "$@" } mean() { sum="`echo -n $* | sed -e "s/ / + /g"`" mean="`echo "scale = 3; ($sum) / $#" | bc`" printf "%3.3f\n" $mean } export -f mean div1024() { printf "%3.0f\n" "`echo "$1 / 1024" | bc`" } export -f div1024 benchmark-() { [ -x $1 ] || { echo "$0: not found $1"; return 1; } printf "%-18s " "$2$sz" for run in {1..3} do tym $1 $sz 2>&1 >/dev/null done | xargs bash -c 'mean "$@"' mean } memory-benchmark-() { [ -x $1 ] || { echo "$0: not found $1"; return 1; } printf "%-18s " "$2$sz" for run in {1..3} do spc $1 $sz 2>&1 >/dev/null done | xargs bash -c 'mean "$@"' mean | xargs bash -c 'div1024 "$@"' div1024 } benchmark-cmp-() { [ -x $1 ] || { echo "$0: not found $1"; return 1; } grep "^ *$2$sz " bench/runtime-$HOSTNAME | tr '\n' ' ' echo -n ' ' for run in {1..1} do tym $1 $sz 2>&1 >/dev/null done | xargs bash -c 'mean "$@"' mean } find $* | sed -e "s/^bench/ /;s/^eg/ /" | sort -b | sed -e "s/^ /bench/;s/^ /eg/" | while read e do `basename $0`- $top/$e `basename $e` done