check_performance: Only compile with $THREAD_FLAG when test is marked to require it.
authorLoren J. Rittle <ljrittle@acm.org>
Fri, 30 Jan 2004 08:24:27 +0000 (08:24 +0000)
committerLoren J. Rittle <ljrittle@gcc.gnu.org>
Fri, 30 Jan 2004 08:24:27 +0000 (08:24 +0000)
* 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
libstdc++-v3/scripts/check_performance
libstdc++-v3/testsuite/performance/allocator.cc
libstdc++-v3/testsuite/performance/allocator_map_thread.cc
libstdc++-v3/testsuite/performance/allocator_thread.cc
libstdc++-v3/testsuite/testsuite_performance.h

index e973cce9ac4125093303a24761b222c680261e9a..2baf9852bb22980404312d9140a88659fea03645 100644 (file)
@@ -1,3 +1,17 @@
+2004-01-30  Loren J. Rittle  <ljrittle@acm.org>
+
+       * 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  <stephen.webb@bregmasoft.com>
 
        * config/local/generic/c_locale.h: Change ::malloc() to new char[].
index 5865114d1eb4f9837265fbb612eaa44a6fd9217d..cbfabb0a032f76aacf7279aa58b19553d8966859 100755 (executable)
@@ -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
index c7299fc5508106f9a6611efbd67d9bf817a5ffd4..5f864ea0425cf0d8b599fecd794f91cf4a7e0d1d 100644 (file)
 #include <typeinfo>
 #include <sstream>
 #include <ext/mt_allocator.h>
+#include <ext/new_allocator.h>
 #include <ext/malloc_allocator.h>
 #include <cxxabi.h>
 #include <testsuite_performance.h>
 
 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)
@@ -81,29 +83,6 @@ template<typename Container>
     return test_iterations;
   }
 
-template<typename Container>
-  void
-  calibrate_iterations()
-  {
-    int try_iterations = iterations = 100000;
-    int test_iterations;
-
-    __gnu_test::time_counter timer;
-    timer.start();
-    test_iterations = do_loop<Container>();
-    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<int>(xtics * iterpc);
-      }
-  }
-
 template<typename Container>
   void
   test_container(Container obj)
@@ -130,15 +109,31 @@ template<typename Container>
 // http://gcc.gnu.org/ml/libstdc++/2003-05/msg00231.html
 int main(void)
 {
-  calibrate_iterations<vector<test_type> >();
+#ifdef TEST_B1
   test_container(vector<test_type>());
+#endif
+#ifdef TEST_B2
   test_container(vector<test_type, malloc_allocator<test_type> >());
+#endif
+#ifdef TEST_B3
+  test_container(vector<test_type, new_allocator<test_type> >());
+#endif
+#ifdef TEST_B4
   test_container(vector<test_type, __mt_alloc<test_type> >());
+#endif
 
-  calibrate_iterations<list<test_type> >();
+#ifdef TEST_B5
   test_container(list<test_type>());
+#endif
+#ifdef TEST_B6
   test_container(list<test_type, malloc_allocator<test_type> >());
+#endif
+#ifdef TEST_B7
+  test_container(list<test_type, new_allocator<test_type> >());
+#endif
+#ifdef TEST_B8
   test_container(list<test_type, __mt_alloc<test_type> >());
+#endif
 
   return 0;
 }
index 65fb408b34c3d68971b6cf96abec06b89e9bb387..f6b4d45b651547c57235c14ee64057afbac14e91 100644 (file)
 #include <iostream>
 #include <typeinfo>
 #include <sstream>
-#include <cxxabi.h>
 #include <ext/mt_allocator.h>
+#include <ext/new_allocator.h>
 #include <ext/malloc_allocator.h>
+#include <cxxabi.h>
 #include <testsuite_performance.h>
 
 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<typename Container>
   void*
@@ -69,23 +71,6 @@ template<typename Container>
       }
   }
 
-template<typename Container>
-  void
-  calibrate_iterations()
-  {
-    int try_iterations = iterations = 10000;
-
-    __gnu_test::time_counter timer;
-    timer.start();
-    do_loop<Container>();
-    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<int>(xtics * iterpc);
-  }
-
 template<typename Container>
   void
   test_container(Container obj)
@@ -122,11 +107,19 @@ template<typename Container>
 
 int main(void)
 {
-  calibrate_iterations<map<int, int> >();
+#ifdef TEST_T1
   test_container(map<int, int>());
+#endif
+#ifdef TEST_T2
+  test_container(map<int, int, less<const int>, new_allocator<int> >());
+#endif
+#ifdef TEST_T3
   test_container(map<int, int, less<const int>, malloc_allocator<int> >());
+#endif
+#ifdef TEST_T4
   test_container(map<int, int, less<const int>,
                      __mt_alloc< pair<const int, int> > >());
+#endif
 
   return 0;
 }
index 68da4d7bcc2751ddc6c35f6c282427b08c132d20..b313a1f7c4c4cec9475c4bae9a0c57279cc82aac 100644 (file)
 #include <sstream>
 #include <pthread.h>
 #include <ext/mt_allocator.h>
+#include <ext/new_allocator.h>
 #include <ext/malloc_allocator.h>
 #include <cxxabi.h>
 #include <testsuite_performance.h>
 
 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)
@@ -89,23 +91,6 @@ template<typename Container>
       }
   }
 
-template<typename Container>
-  void
-  calibrate_iterations()
-  {
-    int try_iterations = iterations = 100000;
-
-    __gnu_test::time_counter timer;
-    timer.start();
-    do_loop<Container>();
-    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<int>(xtics * iterpc);
-  }
-
 template<typename Container>
   void
   test_container(Container obj)
@@ -144,15 +129,31 @@ template<typename Container>
 // http://gcc.gnu.org/ml/libstdc++/2003-05/msg00231.html
 int main(void)
 {
-  calibrate_iterations<vector<test_type> >();
+#ifdef TEST_T1
   test_container(vector<test_type>());
+#endif
+#ifdef TEST_T2
   test_container(vector<test_type, malloc_allocator<test_type> >());
+#endif
+#ifdef TEST_T3
+  test_container(vector<test_type, new_allocator<test_type> >());
+#endif
+#ifdef TEST_T4
   test_container(vector<test_type, __mt_alloc<test_type> >());
+#endif
 
-  calibrate_iterations<list<test_type> >();
+#ifdef TEST_T5
   test_container(list<test_type>());
+#endif
+#ifdef TEST_T6
   test_container(list<test_type, malloc_allocator<test_type> >());
+#endif
+#ifdef TEST_T7
+  test_container(list<test_type, new_allocator<test_type> >());
+#endif
+#ifdef TEST_T8
   test_container(list<test_type, __mt_alloc<test_type> >());
+#endif
 
   return 0;
 }
index f70e5274af6b318a3a6615fe2fe2e011df7d402d..56b02bc64d8f367d1d16345646a9116bb7bf384a 100644 (file)
@@ -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;