#!/usr/bin/env bash # Script to do performance testing. # Invocation # check_performance SRC_DIR BUILD_DIR # 1: variables # SRC_DIR=$1 BUILD_DIR=$2 # Now that we've successfully translated the numerical option into # a symbolic one, we can safely ignore it. shift # This has been true all along. Found out about it the hard way... case $BASH_VERSION in 1*) echo 'You need bash 2.x to run check_performance. Exiting.'; exit 1 ;; *) ;; esac flags_script=$BUILD_DIR/scripts/testsuite_flags INCLUDES=`$flags_script --build-includes` PCH_FLAGS=`$flags_script --cxxpchflags` FLAGS=`$flags_script --cxxflags` THREAD_FLAG='-pthread' COMPILER=`$flags_script --build-cxx` SH_FLAG="-Wl,--rpath -Wl,$BUILD_DIR/../../gcc \ -Wl,--rpath -Wl,$BUILD_DIR/src/.libs" ST_FLAG="-static" LINK=$SH_FLAG CXX="$COMPILER $INCLUDES $FLAGS $CXXFLAGS $LINK" LIBS="./libtestc++.a" TESTS_FILE="testsuite_files_performance" echo CXX is $CXX for NAME in `cat $TESTS_FILE` do RUN=true TESTNAME=$SRC_DIR/testsuite/$NAME FILE_NAME="`basename $NAME`" FILE_NAME="`echo $FILE_NAME | sed 's/.cc//g'`" # TEST_S == single thread # TEST_B == do both single and multi-thread # TEST_T == multi-thread for CYCLE in `sed -n 's,.*\(TEST_[SB][0-9]*\)$,\1,p' $TESTNAME` do RUN=false echo $NAME $CYCLE EXE_NAME="`echo $FILE_NAME-$CYCLE.exe`" $CXX -DNOTHREAD -D$CYCLE $TESTNAME $LIBS -o $EXE_NAME if [ -f $EXE_NAME ]; then ./$EXE_NAME else echo "compile error:" echo "$CXX -DNOTHREAD -D$CYCLE $TESTNAME $LIBS -o $EXE_NAME" fi done for CYCLE in `sed -n 's,.*\(TEST_[TB][0-9]*\)$,\1,p' $TESTNAME` do RUN=false echo $NAME $CYCLE thread EXE_NAME="`echo $FILE_NAME-$CYCLE.exe`" $CXX $THREAD_FLAG -D$CYCLE $TESTNAME $LIBS -o $EXE_NAME if [ -f $EXE_NAME ]; then ./$EXE_NAME else echo "compile error:" echo "$CXX $THREAD_FLAG -D$CYCLE $TESTNAME $LIBS -o $EXE_NAME" fi done if $RUN; then echo $NAME EXE_NAME="`echo $FILE_NAME.exe`" $CXX $TESTNAME $LIBS -o $EXE_NAME if [ -f $EXE_NAME ]; then ./$EXE_NAME >& tmp.$FILE_NAME else echo "compile error:" echo "$CXX $TESTNAME $LIBS -o $EXE_NAME" fi if [ -s tmp.$FILE_NAME ]; then mv tmp.$FILE_NAME $FILE_NAME.xml fi fi done exit 0