Commit f474835b by Benjamin Kosnik Committed by Benjamin Kosnik

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
parent de004e6d
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> 2005-01-17 Paolo Carlini <pcarlini@suse.de>
PR libstdc++/19433 PR libstdc++/19433
......
// 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 // 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 // software; you can redistribute it and/or modify it under the
...@@ -92,6 +92,7 @@ template<typename Container> ...@@ -92,6 +92,7 @@ template<typename Container>
do_test(void* p = NULL) do_test(void* p = NULL)
{ {
do_loop<Container>(); do_loop<Container>();
return p;
} }
template<typename Container> template<typename Container>
...@@ -103,42 +104,39 @@ template<typename Container> ...@@ -103,42 +104,39 @@ template<typename Container>
time_counter time; time_counter time;
resource_counter resource; resource_counter resource;
clear_counters(time, resource); {
start_counters(time, resource); start_counters(time, resource);
if (!run_threaded)
if (! run_threaded) {
{ do_loop<Container>();
do_loop<Container>(); }
} else
else {
{
#if defined (_GLIBCXX_GCC_GTHR_POSIX_H) && !defined (NOTHREAD) #if defined (_GLIBCXX_GCC_GTHR_POSIX_H) && !defined (NOTHREAD)
pthread_t t1, t2, t3, t4; pthread_t t1, t2, t3, t4;
pthread_create(&t1, 0, &do_test<Container>, 0); pthread_create(&t1, 0, &do_test<Container>, 0);
pthread_create(&t2, 0, &do_test<Container>, 0); pthread_create(&t2, 0, &do_test<Container>, 0);
pthread_create(&t3, 0, &do_test<Container>, 0); pthread_create(&t3, 0, &do_test<Container>, 0);
pthread_create(&t4, 0, &do_test<Container>, 0); pthread_create(&t4, 0, &do_test<Container>, 0);
pthread_join(t1, NULL); pthread_join(t1, NULL);
pthread_join(t2, NULL); pthread_join(t2, NULL);
pthread_join(t3, NULL); pthread_join(t3, NULL);
pthread_join(t4, NULL); pthread_join(t4, NULL);
#else #endif
return; }
#endif stop_counters(time, resource);
}
stop_counters(time, resource); std::ostringstream comment;
if (run_threaded)
std::ostringstream comment; comment << "4-way threaded iterations: " << iterations*4 << '\t';
if (run_threaded) else
comment << "4-way threaded iterations: " << iterations*4 << '\t'; comment << "iterations: " << iterations << '\t';
else comment << "type: " << abi::__cxa_demangle(typeid(obj).name(),
comment << "iterations: " << iterations << '\t'; 0, 0, &status);
comment << "type: " << abi::__cxa_demangle(typeid(obj).name(), report_header(__FILE__, comment.str());
0, 0, &status); report_performance(__FILE__, string(), time, resource);
report_header(__FILE__, comment.str()); }
report_performance(__FILE__, string(), time, resource);
} }
// http://gcc.gnu.org/ml/libstdc++/2001-05/msg00105.html // http://gcc.gnu.org/ml/libstdc++/2001-05/msg00105.html
......
...@@ -96,20 +96,19 @@ template<typename Container> ...@@ -96,20 +96,19 @@ template<typename Container>
time_counter time; time_counter time;
resource_counter resource; resource_counter resource;
clear_counters(time, resource); {
start_counters(time, resource); start_counters(time, resource);
do_loop<Container>();
do_loop<Container>(); do_loop<Container>();
do_loop<Container>(); stop_counters(time, resource);
stop_counters(time, resource); std::ostringstream comment;
comment << "repeated iterations: " << iterations*2 << '\t';
std::ostringstream comment; comment << "type: " << abi::__cxa_demangle(typeid(obj).name(),
comment << "repeated iterations: " << iterations*2 << '\t'; 0, 0, &status);
comment << "type: " << abi::__cxa_demangle(typeid(obj).name(), report_header(__FILE__, comment.str());
0, 0, &status); report_performance(__FILE__, string(), time, resource);
report_header(__FILE__, comment.str()); }
report_performance(__FILE__, string(), time, resource);
} }
// http://gcc.gnu.org/ml/libstdc++/2001-05/msg00105.html // http://gcc.gnu.org/ml/libstdc++/2001-05/msg00105.html
......
// 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 // 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 // software; you can redistribute it and/or modify it under the
...@@ -64,7 +64,6 @@ template<typename Container> ...@@ -64,7 +64,6 @@ template<typename Container>
for (int c = 0; c < 10; c++) for (int c = 0; c < 10; c++)
{ {
Container m; Container m;
for (unsigned i = 0; i < iterations; ++i) for (unsigned i = 0; i < iterations; ++i)
m[i] = i; m[i] = i;
} }
...@@ -73,6 +72,7 @@ template<typename Container> ...@@ -73,6 +72,7 @@ template<typename Container>
{ {
// No point allocating all available memory, repeatedly. // No point allocating all available memory, repeatedly.
} }
return p;
} }
template<typename Container> template<typename Container>
...@@ -85,7 +85,6 @@ template<typename Container> ...@@ -85,7 +85,6 @@ template<typename Container>
time_counter time; time_counter time;
resource_counter resource; resource_counter resource;
clear_counters(time, resource);
start_counters(time, resource); start_counters(time, resource);
pthread_t t1, t2, t3, t4; pthread_t t1, t2, t3, t4;
......
// -*- C++ -*- // -*- C++ -*-
// Testing performance utilities for the C++ library testsuite. // 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 // 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 // software; you can redistribute it and/or modify it under the
...@@ -77,31 +77,44 @@ namespace __gnu_test ...@@ -77,31 +77,44 @@ namespace __gnu_test
{ {
class time_counter class time_counter
{ {
private:
clock_t elapsed_begin; clock_t elapsed_begin;
clock_t elapsed_end; clock_t elapsed_end;
tms tms_begin; tms tms_begin;
tms tms_end; tms tms_end;
public: public:
time_counter() explicit
{ this->clear(); } time_counter() : elapsed_begin(), elapsed_end(), tms_begin(), tms_end()
{ }
void void
clear() clear() throw()
{ {
elapsed_begin = 0; elapsed_begin = clock_t();
elapsed_end = 0; elapsed_end = clock_t();
memset(&tms_begin, 0, sizeof(tms)); tms_begin = tms();
memset(&tms_end, 0, sizeof(tms)); tms_end = tms();
} }
void void
start() 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 void
stop() 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 size_t
real_time() const real_time() const
...@@ -129,7 +142,7 @@ namespace __gnu_test ...@@ -129,7 +142,7 @@ namespace __gnu_test
{ this->clear(); } { this->clear(); }
void void
clear() clear() throw()
{ {
memset(&rusage_begin, 0, sizeof(rusage_begin)); memset(&rusage_begin, 0, sizeof(rusage_begin));
memset(&rusage_end, 0, sizeof(rusage_end)); memset(&rusage_end, 0, sizeof(rusage_end));
...@@ -168,21 +181,21 @@ namespace __gnu_test ...@@ -168,21 +181,21 @@ namespace __gnu_test
{ return rusage_end.ru_nswap - rusage_begin.ru_nswap; } { return rusage_end.ru_nswap - rusage_begin.ru_nswap; }
}; };
void inline void
start_counters(time_counter& t, resource_counter& r) start_counters(time_counter& t, resource_counter& r)
{ {
t.start(); t.start();
r.start(); r.start();
} }
void inline void
stop_counters(time_counter& t, resource_counter& r) stop_counters(time_counter& t, resource_counter& r)
{ {
t.stop(); t.stop();
r.stop(); r.stop();
} }
void inline void
clear_counters(time_counter& t, resource_counter& r) clear_counters(time_counter& t, resource_counter& r)
{ {
t.clear(); t.clear();
...@@ -202,8 +215,8 @@ namespace __gnu_test ...@@ -202,8 +215,8 @@ namespace __gnu_test
std::ofstream out(name, std::ios_base::app); std::ofstream out(name, std::ios_base::app);
#ifdef __GTHREADS #ifdef __GTHREADS
if (__gthread_active_p ()) if (__gthread_active_p())
testname.append ("-thread"); testname.append("-thread");
#endif #endif
out.setf(std::ios_base::left); out.setf(std::ios_base::left);
...@@ -234,7 +247,7 @@ namespace __gnu_test ...@@ -234,7 +247,7 @@ namespace __gnu_test
#ifdef __GTHREADS #ifdef __GTHREADS
if (__gthread_active_p ()) if (__gthread_active_p ())
testname.append ("-thread"); testname.append("-thread");
#endif #endif
out.setf(std::ios_base::left); out.setf(std::ios_base::left);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment