src/work/marci/time_measure.h
changeset 327 63c138adc477
parent 324 c8b0ad782bda
child 425 4fbe868c1fb4
     1.1 --- a/src/work/marci/time_measure.h	Thu Apr 15 05:51:12 2004 +0000
     1.2 +++ b/src/work/marci/time_measure.h	Thu Apr 15 06:49:49 2004 +0000
     1.3 @@ -17,6 +17,18 @@
     1.4  //     return double(tv.tv_sec)+double(tv.tv_usec)/1000000.0;
     1.5  //   }
     1.6  
     1.7 +  /// Class to store (cpu)time instances.
     1.8 +
     1.9 +  /// This class stores five time values.
    1.10 +  /// - a real time
    1.11 +  /// - a user cpu time
    1.12 +  /// - a system cpu time
    1.13 +  /// - a user cpu time of children
    1.14 +  /// - a system cpu time of children
    1.15 +  ///
    1.16 +  /// TimeStamp's can be added to or substracted from each other and
    1.17 +  /// they can be push to a stream.
    1.18 +
    1.19    class TimeStamp
    1.20    {
    1.21      tms ts;
    1.22 @@ -27,6 +39,7 @@
    1.23      tms &getTms() {return ts;}
    1.24      const tms &getTms() const {return ts;}
    1.25      double getRealTime() const {return real_time;}
    1.26 +    ///Read the current time values of the process.
    1.27      void stamp()
    1.28      {
    1.29        timeval tv;
    1.30 @@ -34,9 +47,10 @@
    1.31        gettimeofday(&tv, 0);real_time=tv.tv_sec+double(tv.tv_usec)/1e6;
    1.32      }
    1.33    
    1.34 +    /// Constructor initializing with zero.
    1.35      TimeStamp()
    1.36      { ts.tms_utime=ts.tms_stime=ts.tms_cutime=ts.tms_cstime=0; real_time=0;}
    1.37 -  
    1.38 +    ///Constructor initializing with the current time values of the process.
    1.39      TimeStamp(void *) { stamp();}
    1.40    
    1.41      TimeStamp &operator+=(const TimeStamp &b)
    1.42 @@ -68,6 +82,7 @@
    1.43        return t-=b;
    1.44      }
    1.45  
    1.46 +    ///The time ellapsed since the last call of stamp()
    1.47      TimeStamp ellapsed() const
    1.48      {
    1.49        TimeStamp t(NULL);
    1.50 @@ -94,6 +109,7 @@
    1.51      }
    1.52    };
    1.53  
    1.54 +  ///Class measuring the cpu time and real time usage of the process.
    1.55    class Timer
    1.56    {
    1.57      TimeStamp start_time;
    1.58 @@ -101,8 +117,14 @@
    1.59      void _reset() {start_time.stamp();}
    1.60    
    1.61    public: 
    1.62 +    ///Constructor. It starts with zero time counters.
    1.63      Timer() {_reset();}
    1.64  
    1.65 +    ///Computes the ellapsed time.
    1.66 +
    1.67 +    ///This conversion computes the ellapsed time
    1.68 +    ///since the construction of \c t or since
    1.69 +    ///the last \c t.reset().
    1.70      operator TimeStamp ()
    1.71      {
    1.72        TimeStamp t;
    1.73 @@ -110,6 +132,7 @@
    1.74        return t-start_time;
    1.75      }
    1.76  
    1.77 +    ///Resets the time counters.
    1.78      TimeStamp reset()
    1.79      {
    1.80        TimeStamp t(start_time);
    1.81 @@ -118,6 +141,7 @@
    1.82      }
    1.83    };
    1.84  
    1.85 +  ///Prints the time counters.
    1.86    inline std::ostream& operator<<(std::ostream& os,const TimeStamp &t)
    1.87    {
    1.88      long cls = sysconf(_SC_CLK_TCK);