| #!/bin/bash -x | |
| # Variant of cmpcl.sh for comparing SSA phase timings for a CL and its immediate predecessor. | |
| # git fetch "https://go.googlesource.com/go" refs/changes/61/196661/3 && git checkout FETCH_HEAD | |
| if [ $# -lt 1 ] ; then | |
| echo cmpcl.sh "refs/changes/<nn>/<cl>/<patch>" "bent-options" | |
| exit 1 | |
| fi | |
| if [ ${1:0:1} = "-" ] ; then | |
| echo "First parameter should be a git tag or branch" | |
| exit 1 | |
| fi | |
| cl="$1" | |
| shift | |
| ROOT=`pwd` | |
| export ROOT cl | |
| # 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=0 | |
| B=1 | |
| cd "${ROOT}" | |
| if [ -e go-old ] ; then | |
| rm -rf go-old | |
| fi | |
| git clone https://go.googlesource.com/go go-old | |
| if [ $? != 0 ] ; then | |
| echo git clone https://go.googlesource.com/go go-old FAILED | |
| exit 1 | |
| fi | |
| cd go-old/src | |
| git fetch "https://go.googlesource.com/go" "${cl}" | |
| if [ $? != 0 ] ; then | |
| echo git fetch "https://go.googlesource.com/go" "${cl}" failed | |
| exit 1 | |
| fi | |
| git checkout FETCH_HEAD^1 | |
| if [ $? != 0 ] ; then | |
| echo git checkout FETCH_HEAD^1 failed | |
| exit 1 | |
| fi | |
| ./make.bash | |
| if [ $? != 0 ] ; then | |
| echo BASE make.bash FAILED | |
| exit 1 | |
| fi | |
| oldtag=`git log -n 1 --format='%h'` | |
| export oldtag | |
| cd "${ROOT}" | |
| if [ -e go-new ] ; then | |
| rm -rf go-new | |
| fi | |
| git clone https://go.googlesource.com/go go-new | |
| if [ $? != 0 ] ; then | |
| echo git clone go-new failed | |
| exit 1 | |
| fi | |
| cd go-new/src | |
| git fetch "https://go.googlesource.com/go" "${cl}" | |
| if [ $? != 0 ] ; then | |
| echo git fetch "https://go.googlesource.com/go" "${cl}" failed | |
| exit 1 | |
| fi | |
| git checkout FETCH_HEAD | |
| if [ $? != 0 ] ; then | |
| echo git checkout FETCH_HEAD failed | |
| exit 1 | |
| fi | |
| ./make.bash | |
| if [ $? != 0 ] ; then | |
| echo make.bash failed | |
| exit 1 | |
| fi | |
| newtag=`git log -n 1 --format='%h'` | |
| export newtag | |
| STAMP="$$" | |
| export STAMP | |
| cd "${ROOT}" | |
| ${PERFLOCK} bent -v -N=${N} -a=${B} -L=bentjobs.log -c=Old-phase,New-phase -C=configurations-cmpjob.toml "$@" | tee phases.${STAMP}.log | |
| phase-times > phases.${STAMP}.csv | |