github.com/cockroachdb/cockroach@v20.2.0-alpha.1+incompatible/scripts/bench (about) 1 #!/bin/bash 2 set -euo pipefail 3 4 if ! which benchstat > /dev/null; then 5 cat 1>&2 <<EOF 6 Requires github.com/cockroachdb/benchstat 7 Run: 8 go get github.com/cockroachdb/benchstat 9 EOF 10 exit 1 11 fi 12 13 cd "$(dirname $0)/.." 14 if [[ $# < 1 || $# > 2 ]]; then 15 cat 1>&2 <<EOF 16 Usage: BENCHES=regexp PKG=./pkg/yourpkg $0 oldbranch [newbranch] 17 EOF 18 exit 1 19 fi 20 21 OLDNAME=$1 22 OLD=$(git rev-parse "$1") 23 24 ORIGREF=$(git symbolic-ref -q HEAD) 25 ORIG=${ORIGREF##refs/heads/} 26 27 if [[ $# < 2 ]]; then 28 NEWNAME="HEAD" 29 NEW=$ORIG 30 else 31 NEWNAME=$2 32 NEW=$(git rev-parse "$2") 33 fi 34 35 echo "Comparing $NEWNAME (new) with $OLDNAME (old)" 36 echo "" 37 38 dest=$(mktemp -d) 39 echo "Writing to ${dest}" 40 41 shas=($OLD $NEW) 42 names=($OLDNAME $NEWNAME) 43 44 for (( i=0; i<${#shas[@]}; i+=1 )); do 45 name=${names[i]} 46 sha=${shas[i]} 47 echo "Switching to $name" 48 git checkout -q "$sha" 49 (set -x; make bench PKG="${PKG}" BENCHTIMEOUT="${BENCHTIMEOUT:-5m}" BENCHES="${BENCHES}" TESTFLAGS="-count 10 -benchmem" > "${dest}/bench.${name}" 2> "${dest}/log.txt") 50 done 51 benchstat "${dest}/bench.$OLDNAME" "${dest}/bench.$NEWNAME" 52 53 git checkout "$ORIG"