jotdown/contrib/bench_table.sh

41 lines
965 B
Bash
Raw Normal View History

2023-05-31 13:30:16 -04:00
# run benchmarks over a range of commits and assemble a table
# usage: ./contrib/bench_table.sh [-r RANGE] -- BENCHMARKS
range="master.."
while getopts r: flag; do
case "$flag" in
r) range=$OPTARG;;
*) exit 1;;
esac
done
shift $((OPTIND-1))
[ -z "$*" ] && exit 1
make bench || exit 1
current="$(git rev-parse --abbrev-ref HEAD)"
trap "git checkout $current" EXIT
< /proc/cpuinfo grep "model name" | head -n1
{
{
echo "commit"
OPTIND=1
while getopts i:c: flag "$@"; do
case "$flag" in
i) echo "iai:$OPTARG [cycles]";;
c) echo "criterion:$OPTARG [MB/s]";;
*) exit 1
esac
done
} | tr "\n" "\t"
echo
set -x
for commit in $(git rev-list --reverse --topo-order "$range"); do
git checkout "$commit" >/dev/null
./contrib/bench_row.sh "$@" | tee /proc/self/fd/2
done
} | column -t -s"$(printf "\t")"