aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Kosnik <bkoz@redhat.com>2005-01-18 16:44:51 +0000
committerBenjamin Kosnik <bkoz@gcc.gnu.org>2005-01-18 16:44:51 +0000
commitf474835bb9beb8e2a5cbc680760aff00a73e5bfb (patch)
tree044179cbc38bf1f7853151b450ad36c71245377b
parentde004e6db52c426658b4b936500dd524332f7e50 (diff)
downloadgcc-f474835bb9beb8e2a5cbc680760aff00a73e5bfb.zip
gcc-f474835bb9beb8e2a5cbc680760aff00a73e5bfb.tar.gz
gcc-f474835bb9beb8e2a5cbc680760aff00a73e5bfb.tar.bz2
testsuite_performance.h (time_counter::start): Clear.
2005-01-18 Benjamin Kosnik <bkoz@redhat.com> * testsuite/testsuite_performance.h (time_counter::start): Clear. Tweaks. (clear_counters): Inline. (start_counters): Inline. (stop_counters): Inline. * testsuite/performance/20_util/allocator/map_thread.cc: Return. * testsuite/performance/20_util/allocator/insert.cc: Remove bogus return, add return. * testsuite/performance/20_util/allocator/map_thread.cc: Same. From-SVN: r93834
-rw-r--r--libstdc++-v3/ChangeLog12
-rw-r--r--libstdc++-v3/testsuite/performance/20_util/allocator/insert.cc68
-rw-r--r--libstdc++-v3/testsuite/performance/20_util/allocator/insert_insert.cc27
-rw-r--r--libstdc++-v3/testsuite/performance/20_util/allocator/map_thread.cc5
-rw-r--r--libstdc++-v3/testsuite/testsuite_performance.h49
5 files changed, 91 insertions, 70 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 8bd52a5..a8ff690 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,15 @@
+2005-01-18 Benjamin Kosnik <bkoz@redhat.com>
+
+ * testsuite/testsuite_performance.h (time_counter::start):
+ Clear. Tweaks.
+ (clear_counters): Inline.
+ (start_counters): Inline.
+ (stop_counters): Inline.
+ * testsuite/performance/20_util/allocator/map_thread.cc: Return.
+ * testsuite/performance/20_util/allocator/insert.cc: Remove bogus
+ return, add return.
+ * testsuite/performance/20_util/allocator/map_thread.cc: Same.
+
2005-01-17 Paolo Carlini <pcarlini@suse.de>
PR libstdc++/19433
diff --git a/libstdc++-v3/testsuite/performance/20_util/allocator/insert.cc b/libstdc++-v3/testsuite/performance/20_util/allocator/insert.cc
index 372b7e0..ab53afc 100644
--- a/libstdc++-v3/testsuite/performance/20_util/allocator/insert.cc
+++ b/libstdc++-v3/testsuite/performance/20_util/allocator/insert.cc
@@ -1,4 +1,4 @@
-// Copyright (C) 2003, 2004 Free Software Foundation, Inc.
+// Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@@ -92,6 +92,7 @@ template<typename Container>
do_test(void* p = NULL)
{
do_loop<Container>();
+ return p;
}
template<typename Container>
@@ -103,42 +104,39 @@ template<typename Container>
time_counter time;
resource_counter resource;
- clear_counters(time, resource);
- start_counters(time, resource);
-
- if (! run_threaded)
- {
- do_loop<Container>();
- }
- else
- {
+ {
+ start_counters(time, resource);
+ if (!run_threaded)
+ {
+ do_loop<Container>();
+ }
+ else
+ {
#if defined (_GLIBCXX_GCC_GTHR_POSIX_H) && !defined (NOTHREAD)
- pthread_t t1, t2, t3, t4;
- pthread_create(&t1, 0, &do_test<Container>, 0);
- pthread_create(&t2, 0, &do_test<Container>, 0);
- pthread_create(&t3, 0, &do_test<Container>, 0);
- pthread_create(&t4, 0, &do_test<Container>, 0);
-
- pthread_join(t1, NULL);
- pthread_join(t2, NULL);
- pthread_join(t3, NULL);
- pthread_join(t4, NULL);
-#else
- return;
-#endif
- }
+ pthread_t t1, t2, t3, t4;
+ pthread_create(&t1, 0, &do_test<Container>, 0);
+ pthread_create(&t2, 0, &do_test<Container>, 0);
+ pthread_create(&t3, 0, &do_test<Container>, 0);
+ pthread_create(&t4, 0, &do_test<Container>, 0);
+
+ pthread_join(t1, NULL);
+ pthread_join(t2, NULL);
+ pthread_join(t3, NULL);
+ pthread_join(t4, NULL);
+#endif
+ }
+ stop_counters(time, resource);
- stop_counters(time, resource);
-
- std::ostringstream comment;
- if (run_threaded)
- comment << "4-way threaded iterations: " << iterations*4 << '\t';
- else
- comment << "iterations: " << iterations << '\t';
- comment << "type: " << abi::__cxa_demangle(typeid(obj).name(),
- 0, 0, &status);
- report_header(__FILE__, comment.str());
- report_performance(__FILE__, string(), time, resource);
+ std::ostringstream comment;
+ if (run_threaded)
+ comment << "4-way threaded iterations: " << iterations*4 << '\t';
+ else
+ comment << "iterations: " << iterations << '\t';
+ comment << "type: " << abi::__cxa_demangle(typeid(obj).name(),
+ 0, 0, &status);
+ report_header(__FILE__, comment.str());
+ report_performance(__FILE__, string(), time, resource);
+ }
}
// http://gcc.gnu.org/ml/libstdc++/2001-05/msg00105.html
diff --git a/libstdc++-v3/testsuite/performance/20_util/allocator/insert_insert.cc b/libstdc++-v3/testsuite/performance/20_util/allocator/insert_insert.cc
index 455c9a4..f0a3e75 100644
--- a/libstdc++-v3/testsuite/performance/20_util/allocator/insert_insert.cc
+++ b/libstdc++-v3/testsuite/performance/20_util/allocator/insert_insert.cc
@@ -96,20 +96,19 @@ template<typename Container>
time_counter time;
resource_counter resource;
- clear_counters(time, resource);
- start_counters(time, resource);
-
- do_loop<Container>();
- do_loop<Container>();
-
- stop_counters(time, resource);
-
- std::ostringstream comment;
- comment << "repeated iterations: " << iterations*2 << '\t';
- comment << "type: " << abi::__cxa_demangle(typeid(obj).name(),
- 0, 0, &status);
- report_header(__FILE__, comment.str());
- report_performance(__FILE__, string(), time, resource);
+ {
+ start_counters(time, resource);
+ do_loop<Container>();
+ do_loop<Container>();
+ stop_counters(time, resource);
+
+ std::ostringstream comment;
+ comment << "repeated iterations: " << iterations*2 << '\t';
+ comment << "type: " << abi::__cxa_demangle(typeid(obj).name(),
+ 0, 0, &status);
+ report_header(__FILE__, comment.str());
+ report_performance(__FILE__, string(), time, resource);
+ }
}
// http://gcc.gnu.org/ml/libstdc++/2001-05/msg00105.html
diff --git a/libstdc++-v3/testsuite/performance/20_util/allocator/map_thread.cc b/libstdc++-v3/testsuite/performance/20_util/allocator/map_thread.cc
index 487a8aa..7335254 100644
--- a/libstdc++-v3/testsuite/performance/20_util/allocator/map_thread.cc
+++ b/libstdc++-v3/testsuite/performance/20_util/allocator/map_thread.cc
@@ -1,4 +1,4 @@
-// Copyright (C) 2004 Free Software Foundation, Inc.
+// Copyright (C) 2004, 2005 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@@ -64,7 +64,6 @@ template<typename Container>
for (int c = 0; c < 10; c++)
{
Container m;
-
for (unsigned i = 0; i < iterations; ++i)
m[i] = i;
}
@@ -73,6 +72,7 @@ template<typename Container>
{
// No point allocating all available memory, repeatedly.
}
+ return p;
}
template<typename Container>
@@ -85,7 +85,6 @@ template<typename Container>
time_counter time;
resource_counter resource;
- clear_counters(time, resource);
start_counters(time, resource);
pthread_t t1, t2, t3, t4;
diff --git a/libstdc++-v3/testsuite/testsuite_performance.h b/libstdc++-v3/testsuite/testsuite_performance.h
index d76c252..5240358 100644
--- a/libstdc++-v3/testsuite/testsuite_performance.h
+++ b/libstdc++-v3/testsuite/testsuite_performance.h
@@ -1,7 +1,7 @@
// -*- C++ -*-
// Testing performance utilities for the C++ library testsuite.
//
-// Copyright (C) 2003, 2004 Free Software Foundation, Inc.
+// Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@@ -77,31 +77,44 @@ namespace __gnu_test
{
class time_counter
{
+ private:
clock_t elapsed_begin;
clock_t elapsed_end;
tms tms_begin;
tms tms_end;
-
+
public:
- time_counter()
- { this->clear(); }
+ explicit
+ time_counter() : elapsed_begin(), elapsed_end(), tms_begin(), tms_end()
+ { }
void
- clear()
+ clear() throw()
{
- elapsed_begin = 0;
- elapsed_end = 0;
- memset(&tms_begin, 0, sizeof(tms));
- memset(&tms_end, 0, sizeof(tms));
+ elapsed_begin = clock_t();
+ elapsed_end = clock_t();
+ tms_begin = tms();
+ tms_end = tms();
}
void
start()
- { elapsed_begin = times(&tms_begin); }
+ {
+ this->clear();
+ elapsed_begin = times(&tms_begin);
+ const clock_t err = clock_t(-1);
+ if (elapsed_begin == err)
+ std::__throw_runtime_error("time_counter::start");
+ }
void
stop()
- { elapsed_end = times(&tms_end); }
+ {
+ elapsed_end = times(&tms_end);
+ const clock_t err = clock_t(-1);
+ if (elapsed_end == err)
+ std::__throw_runtime_error("time_counter::stop");
+ }
size_t
real_time() const
@@ -129,7 +142,7 @@ namespace __gnu_test
{ this->clear(); }
void
- clear()
+ clear() throw()
{
memset(&rusage_begin, 0, sizeof(rusage_begin));
memset(&rusage_end, 0, sizeof(rusage_end));
@@ -168,21 +181,21 @@ namespace __gnu_test
{ return rusage_end.ru_nswap - rusage_begin.ru_nswap; }
};
- void
+ inline void
start_counters(time_counter& t, resource_counter& r)
{
t.start();
r.start();
}
- void
+ inline void
stop_counters(time_counter& t, resource_counter& r)
{
t.stop();
r.stop();
}
- void
+ inline void
clear_counters(time_counter& t, resource_counter& r)
{
t.clear();
@@ -202,8 +215,8 @@ namespace __gnu_test
std::ofstream out(name, std::ios_base::app);
#ifdef __GTHREADS
- if (__gthread_active_p ())
- testname.append ("-thread");
+ if (__gthread_active_p())
+ testname.append("-thread");
#endif
out.setf(std::ios_base::left);
@@ -234,7 +247,7 @@ namespace __gnu_test
#ifdef __GTHREADS
if (__gthread_active_p ())
- testname.append ("-thread");
+ testname.append("-thread");
#endif
out.setf(std::ios_base::left);