136ac495dSmrg#!/usr/bin/env bash 236ac495dSmrg 336ac495dSmrg# Script to do performance testing. 436ac495dSmrg 536ac495dSmrg# Invocation 636ac495dSmrg# check_performance SRC_DIR BUILD_DIR 736ac495dSmrg 836ac495dSmrg# 1: variables 936ac495dSmrg# 1036ac495dSmrgSRC_DIR=$1 1136ac495dSmrgBUILD_DIR=$2 1236ac495dSmrg 1336ac495dSmrg# Now that we've successfully translated the numerical option into 1436ac495dSmrg# a symbolic one, we can safely ignore it. 1536ac495dSmrgshift 1636ac495dSmrg 1736ac495dSmrg# This has been true all along. Found out about it the hard way... 1836ac495dSmrgcase $BASH_VERSION in 1936ac495dSmrg 1*) 2036ac495dSmrg echo 'You need bash 2.x to run check_performance. Exiting.'; 2136ac495dSmrg exit 1 ;; 2236ac495dSmrg *) ;; 2336ac495dSmrgesac 2436ac495dSmrg 2536ac495dSmrgflags_script=$BUILD_DIR/scripts/testsuite_flags 2636ac495dSmrgINCLUDES=`$flags_script --build-includes` 2736ac495dSmrgPCH_FLAGS=`$flags_script --cxxpchflags` 2836ac495dSmrgFLAGS=`$flags_script --cxxflags` 2936ac495dSmrgTHREAD_FLAG='-pthread' 3036ac495dSmrgCOMPILER=`$flags_script --build-cxx` 3136ac495dSmrgSH_FLAG="-Wl,--rpath -Wl,$BUILD_DIR/../../gcc \ 3236ac495dSmrg -Wl,--rpath -Wl,$BUILD_DIR/src/.libs" 3336ac495dSmrgST_FLAG="-static" 3436ac495dSmrgLINK=$SH_FLAG 3536ac495dSmrgCXX="$COMPILER $INCLUDES $FLAGS -std=gnu++0x $CXXFLAGS $LINK" 3636ac495dSmrgLIBS="./libtestc++.a" 3736ac495dSmrgTESTS_FILE="testsuite_files_performance" 3836ac495dSmrg 3936ac495dSmrgecho CXX is $CXX 4036ac495dSmrg 4136ac495dSmrgfor NAME in `cat $TESTS_FILE` 4236ac495dSmrgdo 4336ac495dSmrg RUN=true 4436ac495dSmrg TESTNAME=$SRC_DIR/testsuite/$NAME 4536ac495dSmrg FILE_NAME="`basename $NAME`" 4636ac495dSmrg FILE_NAME="`echo $FILE_NAME | sed 's/.cc//g'`" 47*c0a68be4Smrg ORIG_CXX="$CXX" 48*c0a68be4Smrg CXX="$CXX `sed -n 's/.* STD=/-std=/p' $TESTNAME`" 4936ac495dSmrg 5036ac495dSmrg # TEST_S == single thread 5136ac495dSmrg # TEST_B == do both single and multi-thread 5236ac495dSmrg # TEST_T == multi-thread 5336ac495dSmrg for CYCLE in `sed -n 's,.*\(TEST_[SB][0-9]*\)$,\1,p' $TESTNAME` 5436ac495dSmrg do 5536ac495dSmrg RUN=false 5636ac495dSmrg echo $NAME $CYCLE 5736ac495dSmrg EXE_NAME="`echo $FILE_NAME-$CYCLE.exe`" 5836ac495dSmrg $CXX -DNOTHREAD -D$CYCLE $TESTNAME $LIBS -o $EXE_NAME 5936ac495dSmrg if [ -f $EXE_NAME ]; then 6036ac495dSmrg ./$EXE_NAME 6136ac495dSmrg else 6236ac495dSmrg echo "compile error:" 6336ac495dSmrg echo "$CXX -DNOTHREAD -D$CYCLE $TESTNAME $LIBS -o $EXE_NAME" 6436ac495dSmrg fi 6536ac495dSmrg done 6636ac495dSmrg 6736ac495dSmrg for CYCLE in `sed -n 's,.*\(TEST_[TB][0-9]*\)$,\1,p' $TESTNAME` 6836ac495dSmrg do 6936ac495dSmrg RUN=false 7036ac495dSmrg echo $NAME $CYCLE thread 7136ac495dSmrg EXE_NAME="`echo $FILE_NAME-$CYCLE.exe`" 7236ac495dSmrg $CXX $THREAD_FLAG -D$CYCLE $TESTNAME $LIBS -o $EXE_NAME 7336ac495dSmrg if [ -f $EXE_NAME ]; then 7436ac495dSmrg ./$EXE_NAME 7536ac495dSmrg else 7636ac495dSmrg echo "compile error:" 7736ac495dSmrg echo "$CXX $THREAD_FLAG -D$CYCLE $TESTNAME $LIBS -o $EXE_NAME" 7836ac495dSmrg fi 7936ac495dSmrg done 8036ac495dSmrg 8136ac495dSmrg if $RUN; then 8236ac495dSmrg echo $NAME 8336ac495dSmrg EXE_NAME="`echo $FILE_NAME.exe`" 8436ac495dSmrg $CXX $TESTNAME $LIBS -o $EXE_NAME 8536ac495dSmrg if [ -f $EXE_NAME ]; then 8636ac495dSmrg ./$EXE_NAME >& tmp.$FILE_NAME 8736ac495dSmrg else 8836ac495dSmrg echo "compile error:" 8936ac495dSmrg echo "$CXX $TESTNAME $LIBS -o $EXE_NAME" 9036ac495dSmrg fi 9136ac495dSmrg if [ -s tmp.$FILE_NAME ]; then 9236ac495dSmrg mv tmp.$FILE_NAME $FILE_NAME.xml 9336ac495dSmrg fi 9436ac495dSmrg fi 95*c0a68be4Smrg CXX="$ORIG_CXX" 9636ac495dSmrgdone 9736ac495dSmrg 9836ac495dSmrgexit 0 99