src/work/marci/time_measure.h
changeset 124 8d24100ad408
parent 121 9d5a99b282c0
child 128 f3511cffee11
equal deleted inserted replaced
3:a53fef15c6da 4:054f08cc9cb9
    74   
    74   
    75   friend std::ostream& operator<<(std::ostream& os,const TimeStamp &t);
    75   friend std::ostream& operator<<(std::ostream& os,const TimeStamp &t);
    76   
    76   
    77   double getUserTime() const
    77   double getUserTime() const
    78   {
    78   {
    79     long cls = sysconf(_SC_CLK_TCK);
    79     return double(ts.tms_utime)/sysconf(_SC_CLK_TCK);
    80     return double(ts.tms_utime)/cls;
       
    81   }
    80   }
    82   double getSystemTime() const
    81   double getSystemTime() const
    83   {
    82   {
    84     long cls = sysconf(_SC_CLK_TCK);
    83     return double(ts.tms_stime)/sysconf(_SC_CLK_TCK);
    85     return double(ts.tms_stime)/cls;
       
    86   }
    84   }
    87   double getCUserTime() const
    85   double getCUserTime() const
    88   {
    86   {
    89     long cls = sysconf(_SC_CLK_TCK);
    87     return double(ts.tms_cutime)/sysconf(_SC_CLK_TCK);
    90     return double(ts.tms_cutime)/cls;
       
    91   }
    88   }
    92   double getCSystemTime() const
    89   double getCSystemTime() const
    93   {
    90   {
    94     long cls = sysconf(_SC_CLK_TCK);
    91     return double(ts.tms_cstime)/sysconf(_SC_CLK_TCK);
    95     return double(ts.tms_cstime)/cls;
       
    96   }
    92   }
    97 };
    93 };
    98 
    94 
    99 class Timer
    95 class Timer
   100 {
    96 {
   101   TimeStamp start_time;
    97   TimeStamp start_time;
   102 
    98 
       
    99   void _reset() {start_time.stamp();}
       
   100 
   103 public: 
   101 public: 
   104   void reset() {start_time.stamp();}
   102   Timer() {_reset();}
   105   Timer() {reset();}
       
   106 
   103 
   107   operator TimeStamp ()
   104   operator TimeStamp ()
   108   {
   105   {
   109     TimeStamp t;
   106     TimeStamp t;
   110     t.stamp();
   107     t.stamp();
   111     return t-start_time;
   108     return t-start_time;
   112   }  
   109   }
       
   110   
       
   111   TimeStamp reset()
       
   112   {
       
   113     TimeStamp t(start_time);
       
   114     _reset();
       
   115     return start_time-t;
       
   116   }
       
   117 
   113 };
   118 };
   114 
   119 
   115 inline std::ostream& operator<<(std::ostream& os,const TimeStamp &t)
   120 inline std::ostream& operator<<(std::ostream& os,const TimeStamp &t)
   116 {
   121 {
   117   long cls = sysconf(_SC_CLK_TCK);
   122   long cls = sysconf(_SC_CLK_TCK);