1.1 --- a/src/work/marci/time_measure.h Wed Apr 14 13:30:05 2004 +0000
1.2 +++ b/src/work/marci/time_measure.h Wed Apr 14 13:57:48 2004 +0000
1.3 @@ -8,123 +8,127 @@
1.4 #include <iostream>
1.5 #include <unistd.h>
1.6
1.7 -double currTime() {
1.8 - timeval tv;
1.9 - //timezone tz;
1.10 - gettimeofday(&tv, 0);
1.11 - return double(tv.tv_sec)+double(tv.tv_usec)/1000000.0;
1.12 -}
1.13 +namespace hugo {
1.14
1.15 -class TimeStamp
1.16 -{
1.17 - tms ts;
1.18 - double real_time;
1.19 +// double currTime() {
1.20 +// timeval tv;
1.21 +// //timezone tz;
1.22 +// gettimeofday(&tv, 0);
1.23 +// return double(tv.tv_sec)+double(tv.tv_usec)/1000000.0;
1.24 +// }
1.25 +
1.26 + class TimeStamp
1.27 + {
1.28 + tms ts;
1.29 + double real_time;
1.30
1.31 -public:
1.32 + public:
1.33
1.34 - tms &getTms() {return ts;}
1.35 - const tms &getTms() const {return ts;}
1.36 - double getRealTime() const {return real_time;}
1.37 - void stamp()
1.38 + tms &getTms() {return ts;}
1.39 + const tms &getTms() const {return ts;}
1.40 + double getRealTime() const {return real_time;}
1.41 + void stamp()
1.42 + {
1.43 + timeval tv;
1.44 + times(&ts);
1.45 + gettimeofday(&tv, 0);real_time=tv.tv_sec+double(tv.tv_usec)/1e6;
1.46 + }
1.47 +
1.48 + TimeStamp()
1.49 + { ts.tms_utime=ts.tms_stime=ts.tms_cutime=ts.tms_cstime=0; real_time=0;}
1.50 +
1.51 + TimeStamp(void *) { stamp();}
1.52 +
1.53 + TimeStamp &operator+=(const TimeStamp &b)
1.54 + {
1.55 + ts.tms_utime+=b.ts.tms_utime;
1.56 + ts.tms_stime+=b.ts.tms_stime;
1.57 + ts.tms_cutime+=b.ts.tms_cutime;
1.58 + ts.tms_cstime+=b.ts.tms_cstime;
1.59 + real_time+=b.real_time;
1.60 + return *this;
1.61 + }
1.62 + TimeStamp operator+(const TimeStamp &b) const
1.63 + {
1.64 + TimeStamp t(*this);
1.65 + return t+=b;
1.66 + }
1.67 + TimeStamp &operator-=(const TimeStamp &b)
1.68 + {
1.69 + ts.tms_utime-=b.ts.tms_utime;
1.70 + ts.tms_stime-=b.ts.tms_stime;
1.71 + ts.tms_cutime-=b.ts.tms_cutime;
1.72 + ts.tms_cstime-=b.ts.tms_cstime;
1.73 + real_time-=b.real_time;
1.74 + return *this;
1.75 + }
1.76 + TimeStamp operator-(const TimeStamp &b) const
1.77 + {
1.78 + TimeStamp t(*this);
1.79 + return t-=b;
1.80 + }
1.81 +
1.82 + TimeStamp Ellapsed() const
1.83 + {
1.84 + TimeStamp t(NULL);
1.85 + return t-*this;
1.86 + }
1.87 +
1.88 + friend std::ostream& operator<<(std::ostream& os,const TimeStamp &t);
1.89 +
1.90 + double getUserTime() const
1.91 + {
1.92 + return double(ts.tms_utime)/sysconf(_SC_CLK_TCK);
1.93 + }
1.94 + double getSystemTime() const
1.95 + {
1.96 + return double(ts.tms_stime)/sysconf(_SC_CLK_TCK);
1.97 + }
1.98 + double getCUserTime() const
1.99 + {
1.100 + return double(ts.tms_cutime)/sysconf(_SC_CLK_TCK);
1.101 + }
1.102 + double getCSystemTime() const
1.103 + {
1.104 + return double(ts.tms_cstime)/sysconf(_SC_CLK_TCK);
1.105 + }
1.106 + };
1.107 +
1.108 + class Timer
1.109 {
1.110 - timeval tv;
1.111 - times(&ts);
1.112 - gettimeofday(&tv, 0);real_time=tv.tv_sec+double(tv.tv_usec)/1e6;
1.113 - }
1.114 + TimeStamp start_time;
1.115 +
1.116 + void _reset() {start_time.stamp();}
1.117
1.118 - TimeStamp()
1.119 - { ts.tms_utime=ts.tms_stime=ts.tms_cutime=ts.tms_cstime=0; real_time=0;}
1.120 -
1.121 - TimeStamp(void *) { stamp();}
1.122 -
1.123 - TimeStamp &operator+=(const TimeStamp &b)
1.124 + public:
1.125 + Timer() {_reset();}
1.126 +
1.127 + operator TimeStamp ()
1.128 + {
1.129 + TimeStamp t;
1.130 + t.stamp();
1.131 + return t-start_time;
1.132 + }
1.133 +
1.134 + TimeStamp reset()
1.135 + {
1.136 + TimeStamp t(start_time);
1.137 + _reset();
1.138 + return start_time-t;
1.139 + }
1.140 + };
1.141 +
1.142 + inline std::ostream& operator<<(std::ostream& os,const TimeStamp &t)
1.143 {
1.144 - ts.tms_utime+=b.ts.tms_utime;
1.145 - ts.tms_stime+=b.ts.tms_stime;
1.146 - ts.tms_cutime+=b.ts.tms_cutime;
1.147 - ts.tms_cstime+=b.ts.tms_cstime;
1.148 - real_time+=b.real_time;
1.149 - return *this;
1.150 - }
1.151 - TimeStamp operator+(const TimeStamp &b) const
1.152 - {
1.153 - TimeStamp t(*this);
1.154 - return t+=b;
1.155 - }
1.156 - TimeStamp &operator-=(const TimeStamp &b)
1.157 - {
1.158 - ts.tms_utime-=b.ts.tms_utime;
1.159 - ts.tms_stime-=b.ts.tms_stime;
1.160 - ts.tms_cutime-=b.ts.tms_cutime;
1.161 - ts.tms_cstime-=b.ts.tms_cstime;
1.162 - real_time-=b.real_time;
1.163 - return *this;
1.164 - }
1.165 - TimeStamp operator-(const TimeStamp &b) const
1.166 - {
1.167 - TimeStamp t(*this);
1.168 - return t-=b;
1.169 + long cls = sysconf(_SC_CLK_TCK);
1.170 + os << "u: " << double(t.getTms().tms_utime)/cls <<
1.171 + "s, s: " << double(t.getTms().tms_stime)/cls <<
1.172 + "s, cu: " << double(t.getTms().tms_cutime)/cls <<
1.173 + "s, cs: " << double(t.getTms().tms_cstime)/cls <<
1.174 + "s, real: " << t.getRealTime() << "s";
1.175 + return os;
1.176 }
1.177
1.178 - TimeStamp Ellapsed() const
1.179 - {
1.180 - TimeStamp t(NULL);
1.181 - return t-*this;
1.182 - }
1.183 -
1.184 - friend std::ostream& operator<<(std::ostream& os,const TimeStamp &t);
1.185 -
1.186 - double getUserTime() const
1.187 - {
1.188 - return double(ts.tms_utime)/sysconf(_SC_CLK_TCK);
1.189 - }
1.190 - double getSystemTime() const
1.191 - {
1.192 - return double(ts.tms_stime)/sysconf(_SC_CLK_TCK);
1.193 - }
1.194 - double getCUserTime() const
1.195 - {
1.196 - return double(ts.tms_cutime)/sysconf(_SC_CLK_TCK);
1.197 - }
1.198 - double getCSystemTime() const
1.199 - {
1.200 - return double(ts.tms_cstime)/sysconf(_SC_CLK_TCK);
1.201 - }
1.202 -};
1.203 -
1.204 -class Timer
1.205 -{
1.206 - TimeStamp start_time;
1.207 -
1.208 - void _reset() {start_time.stamp();}
1.209 -
1.210 -public:
1.211 - Timer() {_reset();}
1.212 -
1.213 - operator TimeStamp ()
1.214 - {
1.215 - TimeStamp t;
1.216 - t.stamp();
1.217 - return t-start_time;
1.218 - }
1.219 -
1.220 - TimeStamp reset()
1.221 - {
1.222 - TimeStamp t(start_time);
1.223 - _reset();
1.224 - return start_time-t;
1.225 - }
1.226 -};
1.227 -
1.228 -inline std::ostream& operator<<(std::ostream& os,const TimeStamp &t)
1.229 -{
1.230 - long cls = sysconf(_SC_CLK_TCK);
1.231 - os << "u: " << double(t.getTms().tms_utime)/cls <<
1.232 - "s, s: " << double(t.getTms().tms_stime)/cls <<
1.233 - "s, cu: " << double(t.getTms().tms_cutime)/cls <<
1.234 - "s, cs: " << double(t.getTms().tms_cstime)/cls <<
1.235 - "s, real: " << t.getRealTime() << "s";
1.236 - return os;
1.237 -}
1.238 +} //namespace hugo
1.239
1.240 #endif //HUGO_TIME_MEASURE_H