+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
-// 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
do_test(void* p = NULL)
{
do_loop<Container>();
+ return p;
}
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
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
-// 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
for (int c = 0; c < 10; c++)
{
Container m;
-
for (unsigned i = 0; i < iterations; ++i)
m[i] = i;
}
{
// No point allocating all available memory, repeatedly.
}
+ return p;
}
template<typename Container>
time_counter time;
resource_counter resource;
- clear_counters(time, resource);
start_counters(time, resource);
pthread_t t1, t2, t3, t4;
// -*- 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
{
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
{ this->clear(); }
void
- clear()
+ clear() throw()
{
memset(&rusage_begin, 0, sizeof(rusage_begin));
memset(&rusage_end, 0, sizeof(rusage_end));
{ 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();
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);
#ifdef __GTHREADS
if (__gthread_active_p ())
- testname.append ("-thread");
+ testname.append("-thread");
#endif
out.setf(std::ios_base::left);