OSDN Git Service

2005-01-18 Benjamin Kosnik <bkoz@redhat.com>
[pf3gnuchains/gcc-fork.git] / libstdc++-v3 / testsuite / testsuite_performance.h
index d76c252..5240358 100644 (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);