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
This commit is contained in:
Benjamin Kosnik 2005-01-18 16:44:51 +00:00 committed by Benjamin Kosnik
parent de004e6db5
commit f474835bb9
5 changed files with 90 additions and 69 deletions

View File

@ -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

View File

@ -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;
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

View File

@ -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

View File

@ -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;

View File

@ -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);