| #!/bin/bash -x |
| |
| if [ $# -lt 2 ] ; then |
| echo cmpjob.sh "<branch-or-tag>" "<branch-or-tag>" "bent-options" |
| exit 1 |
| fi |
| |
| if [ ${1:0:1} = "-" ] ; then |
| echo "First parameter should be a git tag or branch" |
| exit 1 |
| fi |
| |
| if [ ${2:0:1} = "-" ] ; then |
| echo "Second parameter should be a git tag or branch" |
| exit 1 |
| fi |
| |
| oldtag="$1" |
| shift |
| |
| newtag="$1" |
| shift |
| |
| ROOT=`pwd` |
| export ROOT oldtag newtag |
| |
| # perflock is not always available |
| PERFLOCK=`which perflock` |
| |
| # N is number of benchmarks, B is number of builds |
| # Can override these with -N= and -a= on command line. |
| N=15 |
| B=1 |
| |
| # Adjust N, B, define NUMACTL, set GOMAXPROCS, as necessary. |
| if [ -e ./localfix ] ; then |
| . ./localfix |
| fi |
| |
| REPO="https://go.googlesource.com/go" |
| |
| cd "${ROOT}" |
| |
| if [ -e go-old ] ; then |
| rm -rf go-old |
| fi |
| |
| git clone "${REPO}" go-old |
| if [ "$?" != "0" ] ; then |
| echo git clone "${REPO}" go-old FAILED |
| exit 1 |
| fi |
| cd go-old/src |
| git fetch "${REPO}" "${oldtag}" |
| git checkout "${oldtag}" |
| if [ $? != 0 ] ; then |
| echo git checkout "${oldtag}" failed |
| exit 1 |
| fi |
| ./make.bash |
| if [ $? != 0 ] ; then |
| echo BASE make.bash FAILED |
| exit 1 |
| fi |
| |
| cd "${ROOT}" |
| |
| if [ -e go-new ] ; then |
| rm -rf go-new |
| fi |
| git clone "${REPO}" go-new |
| if [ $? != 0 ] ; then |
| echo git clone go-new failed |
| exit 1 |
| fi |
| cd go-new/src |
| git fetch "${REPO}" "${newtag}" |
| git checkout "${newtag}" |
| if [ $? != 0 ] ; then |
| echo git checkout "${newtag}" failed |
| exit 1 |
| fi |
| ./make.bash |
| if [ $? != 0 ] ; then |
| echo make.bash failed |
| exit 1 |
| fi |
| |
| cd "${ROOT}" |
| GOARCH="${BENTARCH}" ${NUMACTL} ${PERFLOCK} bent -v -N=${N} -a=${B} -L=bentjobs.log -C=configurations-cmpjob.toml "$@" |
| RUN=`tail -1 bentjobs.log | awk -c '{print $1}'` |
| |
| cd bench |
| STAMP="stamp-$$" |
| export STAMP |
| echo "suite: bent-cmp-branch" >> "${STAMP}" |
| echo "bentstamp: ${RUN}" >> "${STAMP}" |
| echo "oldtag: ${oldtag}" >> "${STAMP}" |
| echo "newtag: ${newtag}" >> "${STAMP}" |
| |
| oldlog="old-${oldtag}" |
| newlog="new-${newtag}" |
| |
| cat "${RUN}.Old.build" > "${oldlog}" |
| cat "${RUN}.New.build" > "${newlog}" |
| egrep '^(Benchmark|[-_a-zA-Z0-9]+:)' "${RUN}.Old.stdout" >> "${oldlog}" |
| egrep '^(Benchmark|[-_a-zA-Z0-9]+:)' "${RUN}.New.stdout" >> "${newlog}" |
| cat "${RUN}.Old.{benchsize,benchdwarf}" >> "${oldlog}" |
| cat "${RUN}.New.{benchsize,benchdwarf}" >> "${newlog}" |
| benchsave -header "${STAMP}" "${oldlog}" "${newlog}" |
| rm "${STAMP}" |