aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3
diff options
context:
space:
mode:
authorLoren J. Rittle <ljrittle@acm.org>2004-01-30 08:24:27 +0000
committerLoren J. Rittle <ljrittle@gcc.gnu.org>2004-01-30 08:24:27 +0000
commitf64f44069c2d76c78b647f69f9d19dc65fdd0791 (patch)
tree9af121b7518c99dcd4554d9c6477fc2ba15b30db /libstdc++-v3
parent5fddd9fe582272b47be32830d0fac43ba29cd3c8 (diff)
downloadgcc-f64f44069c2d76c78b647f69f9d19dc65fdd0791.zip
gcc-f64f44069c2d76c78b647f69f9d19dc65fdd0791.tar.gz
gcc-f64f44069c2d76c78b647f69f9d19dc65fdd0791.tar.bz2
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
Diffstat (limited to 'libstdc++-v3')
-rw-r--r--libstdc++-v3/ChangeLog14
-rwxr-xr-xlibstdc++-v3/scripts/check_performance38
-rw-r--r--libstdc++-v3/testsuite/performance/allocator.cc49
-rw-r--r--libstdc++-v3/testsuite/performance/allocator_map_thread.cc35
-rw-r--r--libstdc++-v3/testsuite/performance/allocator_thread.cc43
-rw-r--r--libstdc++-v3/testsuite/testsuite_performance.h10
6 files changed, 113 insertions, 76 deletions
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 <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[].
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 <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)
@@ -83,29 +85,6 @@ template<typename Container>
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)
{
using namespace __gnu_test;
@@ -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;
}
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 <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*
@@ -71,23 +73,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)
{
using namespace __gnu_test;
@@ -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;
}
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 <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)
@@ -91,23 +93,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)
{
using namespace __gnu_test;
@@ -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;
}
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;