From f64f44069c2d76c78b647f69f9d19dc65fdd0791 Mon Sep 17 00:00:00 2001 From: "Loren J. Rittle" Date: Fri, 30 Jan 2004 08:24:27 +0000 Subject: check_performance: Only compile with $THREAD_FLAG when test is marked to require it. * scripts/check_performance: Only compile with $THREAD_FLAG when test is marked to require it. Allow multiple compilations/executions of marked tests. * testsuite/testsuite_performance.h (report_performance): Report dynamic thread support status. (report_header): Likewise. * testsuite/performance/allocator.cc: Stabilize iteration count. Support more allocators. Mark each allocator test to run and report independently. * testsuite/performance/allocator_map_thread.cc: Likewise. * testsuite/performance/allocator_thread.cc: Likewise. From-SVN: r76932 --- libstdc++-v3/ChangeLog | 14 +++++++ libstdc++-v3/scripts/check_performance | 38 +++++++++++++---- libstdc++-v3/testsuite/performance/allocator.cc | 49 ++++++++++------------ .../testsuite/performance/allocator_map_thread.cc | 35 +++++++--------- .../testsuite/performance/allocator_thread.cc | 43 +++++++++---------- libstdc++-v3/testsuite/testsuite_performance.h | 10 +++++ 6 files changed, 113 insertions(+), 76 deletions(-) (limited to 'libstdc++-v3') diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index e973cce..2baf985 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,17 @@ +2004-01-30 Loren J. Rittle + + * scripts/check_performance: Only compile with $THREAD_FLAG + when test is marked to require it. Allow multiple + compilations/executions of marked tests. + * testsuite/testsuite_performance.h (report_performance): + Report dynamic thread support status. + (report_header): Likewise. + * testsuite/performance/allocator.cc: Stabilize iteration + count. Support more allocators. Mark each allocator test to + run and report independently. + * testsuite/performance/allocator_map_thread.cc: Likewise. + * testsuite/performance/allocator_thread.cc: Likewise. + 2004-01-29 Stephen M. Webb * config/local/generic/c_locale.h: Change ::malloc() to new char[]. diff --git a/libstdc++-v3/scripts/check_performance b/libstdc++-v3/scripts/check_performance index 5865114..cbfabb0 100755 --- a/libstdc++-v3/scripts/check_performance +++ b/libstdc++-v3/scripts/check_performance @@ -31,19 +31,43 @@ 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 $THREAD_FLAG $LINK" +CXX="$COMPILER $INCLUDES $FLAGS $LINK" +CXX_THREAD="$COMPILER $INCLUDES $FLAGS $THREAD_FLAG $LINK" TESTS_FILE="testsuite_files_performance" for NAME in `cat $TESTS_FILE` do - echo $NAME - FILE_NAME="`basename $NAME`" - EXE_NAME="`echo $FILE_NAME | sed 's/cc$/exe/'`" - $CXX $SRC_DIR/testsuite/$NAME -o $EXE_NAME - ./$EXE_NAME - echo "" + RUN=true + for CYCLE in `sed -n 's,.*\(TEST_[SB][0-9]*\)$,\1,p' $SRC_DIR/testsuite/$NAME` + do + RUN=false + echo $NAME $CYCLE + FILE_NAME="`basename $NAME`" + EXE_NAME="`echo $FILE_NAME-$CYCLE | sed 's/cc$/exe/'`" + $CXX -D$CYCLE $SRC_DIR/testsuite/$NAME -o $EXE_NAME + ./$EXE_NAME + echo "" + done + for CYCLE in `sed -n 's,.*\(TEST_[TB][0-9]*\)$,\1,p' $SRC_DIR/testsuite/$NAME` + do + RUN=false + echo $NAME $CYCLE THREAD + FILE_NAME="`basename $NAME`" + EXE_NAME="`echo $FILE_NAME-$CYCLE | sed 's/cc$/exe/'`" + $CXX_THREAD -D$CYCLE $SRC_DIR/testsuite/$NAME -o $EXE_NAME + ./$EXE_NAME + echo "" + done + if $RUN; then + echo $NAME + FILE_NAME="`basename $NAME`" + EXE_NAME="`echo $FILE_NAME | sed 's/cc$/exe/'`" + $CXX $SRC_DIR/testsuite/$NAME -o $EXE_NAME + ./$EXE_NAME + echo "" + fi done exit 0 diff --git a/libstdc++-v3/testsuite/performance/allocator.cc b/libstdc++-v3/testsuite/performance/allocator.cc index c7299fc..5f864ea 100644 --- a/libstdc++-v3/testsuite/performance/allocator.cc +++ b/libstdc++-v3/testsuite/performance/allocator.cc @@ -38,18 +38,20 @@ #include #include #include +#include #include #include #include using namespace std; -using __gnu_cxx::malloc_allocator; using __gnu_cxx::__mt_alloc; +using __gnu_cxx::new_allocator; +using __gnu_cxx::malloc_allocator; typedef int test_type; // The number of iterations to be performed. -int iterations; +int iterations = 100000; // The number of values to insert in the container, 32 will cause 5 // (re)allocations to be performed (sizes 4, 8, 16, 32 and 64) @@ -83,29 +85,6 @@ template template void - calibrate_iterations() - { - int try_iterations = iterations = 100000; - int test_iterations; - - __gnu_test::time_counter timer; - timer.start(); - test_iterations = do_loop(); - timer.stop(); - - if (try_iterations > test_iterations && test_iterations > iterations) - iterations = test_iterations - 100; - else - { - double tics = timer.real_time(); - double iterpc = test_iterations / tics; //iterations per clock - double xtics = 200; // works for linux 2gig x86 - iterations = static_cast(xtics * iterpc); - } - } - -template - void test_container(Container obj) { using namespace __gnu_test; @@ -130,15 +109,31 @@ template // http://gcc.gnu.org/ml/libstdc++/2003-05/msg00231.html int main(void) { - calibrate_iterations >(); +#ifdef TEST_B1 test_container(vector()); +#endif +#ifdef TEST_B2 test_container(vector >()); +#endif +#ifdef TEST_B3 + test_container(vector >()); +#endif +#ifdef TEST_B4 test_container(vector >()); +#endif - calibrate_iterations >(); +#ifdef TEST_B5 test_container(list()); +#endif +#ifdef TEST_B6 test_container(list >()); +#endif +#ifdef TEST_B7 + test_container(list >()); +#endif +#ifdef TEST_B8 test_container(list >()); +#endif return 0; } diff --git a/libstdc++-v3/testsuite/performance/allocator_map_thread.cc b/libstdc++-v3/testsuite/performance/allocator_map_thread.cc index 65fb408..f6b4d45 100644 --- a/libstdc++-v3/testsuite/performance/allocator_map_thread.cc +++ b/libstdc++-v3/testsuite/performance/allocator_map_thread.cc @@ -37,17 +37,19 @@ #include #include #include -#include #include +#include #include +#include #include using namespace std; -using __gnu_cxx::malloc_allocator; using __gnu_cxx::__mt_alloc; +using __gnu_cxx::new_allocator; +using __gnu_cxx::malloc_allocator; // The number of iterations to be performed. -int iterations; +int iterations = 25000; template void* @@ -71,23 +73,6 @@ template template void - calibrate_iterations() - { - int try_iterations = iterations = 10000; - - __gnu_test::time_counter timer; - timer.start(); - do_loop(); - timer.stop(); - - double tics = timer.real_time(); - double iterpc = iterations / tics; //iterations per clock - double xtics = 100; // works for linux 2gig x86 - iterations = static_cast(xtics * iterpc); - } - -template - void test_container(Container obj) { using namespace __gnu_test; @@ -122,11 +107,19 @@ template int main(void) { - calibrate_iterations >(); +#ifdef TEST_T1 test_container(map()); +#endif +#ifdef TEST_T2 + test_container(map, new_allocator >()); +#endif +#ifdef TEST_T3 test_container(map, malloc_allocator >()); +#endif +#ifdef TEST_T4 test_container(map, __mt_alloc< pair > >()); +#endif return 0; } diff --git a/libstdc++-v3/testsuite/performance/allocator_thread.cc b/libstdc++-v3/testsuite/performance/allocator_thread.cc index 68da4d7..b313a1f 100644 --- a/libstdc++-v3/testsuite/performance/allocator_thread.cc +++ b/libstdc++-v3/testsuite/performance/allocator_thread.cc @@ -39,18 +39,20 @@ #include #include #include +#include #include #include #include using namespace std; -using __gnu_cxx::malloc_allocator; using __gnu_cxx::__mt_alloc; +using __gnu_cxx::new_allocator; +using __gnu_cxx::malloc_allocator; typedef int test_type; // The number of iterations to be performed. -int iterations; +int iterations = 25000; // The number of values to insert in the container, 32 will cause 5 // (re)allocations to be performed (sizes 4, 8, 16, 32 and 64) @@ -91,23 +93,6 @@ template template void - calibrate_iterations() - { - int try_iterations = iterations = 100000; - - __gnu_test::time_counter timer; - timer.start(); - do_loop(); - timer.stop(); - - double tics = timer.real_time(); - double iterpc = iterations / tics; //iterations per clock - double xtics = 100; // works for linux 2gig x86 - iterations = static_cast(xtics * iterpc); - } - -template - void test_container(Container obj) { using namespace __gnu_test; @@ -144,15 +129,31 @@ template // http://gcc.gnu.org/ml/libstdc++/2003-05/msg00231.html int main(void) { - calibrate_iterations >(); +#ifdef TEST_T1 test_container(vector()); +#endif +#ifdef TEST_T2 test_container(vector >()); +#endif +#ifdef TEST_T3 + test_container(vector >()); +#endif +#ifdef TEST_T4 test_container(vector >()); +#endif - calibrate_iterations >(); +#ifdef TEST_T5 test_container(list()); +#endif +#ifdef TEST_T6 test_container(list >()); +#endif +#ifdef TEST_T7 + test_container(list >()); +#endif +#ifdef TEST_T8 test_container(list >()); +#endif return 0; } diff --git a/libstdc++-v3/testsuite/testsuite_performance.h b/libstdc++-v3/testsuite/testsuite_performance.h index f70e527..56b02bc 100644 --- a/libstdc++-v3/testsuite/testsuite_performance.h +++ b/libstdc++-v3/testsuite/testsuite_performance.h @@ -183,6 +183,11 @@ namespace __gnu_test std::ofstream out(name, std::ios_base::app); +#ifdef __GTHREADS + if (__gthread_active_p ()) + testname.append ("-thread"); +#endif + out.setf(std::ios_base::left); out << std::setw(25) << testname << tab; out << std::setw(25) << comment << tab; @@ -209,6 +214,11 @@ namespace __gnu_test std::ofstream out(name, std::ios_base::app); +#ifdef __GTHREADS + if (__gthread_active_p ()) + testname.append ("-thread"); +#endif + out.setf(std::ios_base::left); out << std::setw(25) << testname << tab; out << std::setw(40) << header << tab; -- cgit v1.1