diff options
author | Benjamin Kosnik <bkoz@redhat.com> | 2005-01-18 16:44:51 +0000 |
---|---|---|
committer | Benjamin Kosnik <bkoz@gcc.gnu.org> | 2005-01-18 16:44:51 +0000 |
commit | f474835bb9beb8e2a5cbc680760aff00a73e5bfb (patch) | |
tree | 044179cbc38bf1f7853151b450ad36c71245377b | |
parent | de004e6db52c426658b4b936500dd524332f7e50 (diff) | |
download | gcc-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
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); |