| #!/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 -std=gnu++11 $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'`" |
| ORIG_CXX="$CXX" |
| CXX="$CXX `sed -n 's/.* STD=/-std=/p' $TESTNAME`" |
| |
| # 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 |
| CXX="$ORIG_CXX" |
| done |
| |
| exit 0 |