... | ... |
@@ -141,129 +141,129 @@ |
141 | 141 |
return *this; |
142 | 142 |
} |
143 | 143 |
///\e |
144 | 144 |
TimeStamp operator*(double b) const |
145 | 145 |
{ |
146 | 146 |
TimeStamp t(*this); |
147 | 147 |
return t*=b; |
148 | 148 |
} |
149 | 149 |
friend TimeStamp operator*(double b,const TimeStamp &t); |
150 | 150 |
///\e |
151 | 151 |
TimeStamp &operator/=(double b) |
152 | 152 |
{ |
153 | 153 |
utime/=b; |
154 | 154 |
stime/=b; |
155 | 155 |
cutime/=b; |
156 | 156 |
cstime/=b; |
157 | 157 |
rtime/=b; |
158 | 158 |
return *this; |
159 | 159 |
} |
160 | 160 |
///\e |
161 | 161 |
TimeStamp operator/(double b) const |
162 | 162 |
{ |
163 | 163 |
TimeStamp t(*this); |
164 | 164 |
return t/=b; |
165 | 165 |
} |
166 | 166 |
///The time ellapsed since the last call of stamp() |
167 | 167 |
TimeStamp ellapsed() const |
168 | 168 |
{ |
169 | 169 |
TimeStamp t(NULL); |
170 | 170 |
return t-*this; |
171 | 171 |
} |
172 | 172 |
|
173 | 173 |
friend std::ostream& operator<<(std::ostream& os,const TimeStamp &t); |
174 | 174 |
|
175 | 175 |
///Gives back the user time of the process |
176 | 176 |
double userTime() const |
177 | 177 |
{ |
178 | 178 |
return utime; |
179 | 179 |
} |
180 | 180 |
///Gives back the system time of the process |
181 | 181 |
double systemTime() const |
182 | 182 |
{ |
183 | 183 |
return stime; |
184 | 184 |
} |
185 | 185 |
///Gives back the user time of the process' children |
186 | 186 |
|
187 | 187 |
///\note On <tt>WIN32</tt> platform this value is not calculated. |
188 | 188 |
/// |
189 | 189 |
double cUserTime() const |
190 | 190 |
{ |
191 | 191 |
return cutime; |
192 | 192 |
} |
193 | 193 |
///Gives back the user time of the process' children |
194 | 194 |
|
195 | 195 |
///\note On <tt>WIN32</tt> platform this value is not calculated. |
196 | 196 |
/// |
197 | 197 |
double cSystemTime() const |
198 | 198 |
{ |
199 | 199 |
return cstime; |
200 | 200 |
} |
201 | 201 |
///Gives back the real time |
202 | 202 |
double realTime() const {return rtime;} |
203 | 203 |
}; |
204 | 204 |
|
205 |
TimeStamp operator*(double b,const TimeStamp &t) |
|
205 |
inline TimeStamp operator*(double b,const TimeStamp &t) |
|
206 | 206 |
{ |
207 | 207 |
return t*b; |
208 | 208 |
} |
209 | 209 |
|
210 | 210 |
///Prints the time counters |
211 | 211 |
|
212 | 212 |
///Prints the time counters in the following form: |
213 | 213 |
/// |
214 | 214 |
/// <tt>u: XX.XXs s: XX.XXs cu: XX.XXs cs: XX.XXs real: XX.XXs</tt> |
215 | 215 |
/// |
216 | 216 |
/// where the values are the |
217 | 217 |
/// \li \c u: user cpu time, |
218 | 218 |
/// \li \c s: system cpu time, |
219 | 219 |
/// \li \c cu: user cpu time of children, |
220 | 220 |
/// \li \c cs: system cpu time of children, |
221 | 221 |
/// \li \c real: real time. |
222 | 222 |
/// \relates TimeStamp |
223 | 223 |
/// \note On <tt>WIN32</tt> platform the cummulative values are not |
224 | 224 |
/// calculated. |
225 | 225 |
inline std::ostream& operator<<(std::ostream& os,const TimeStamp &t) |
226 | 226 |
{ |
227 | 227 |
os << "u: " << t.userTime() << |
228 | 228 |
"s, s: " << t.systemTime() << |
229 | 229 |
"s, cu: " << t.cUserTime() << |
230 | 230 |
"s, cs: " << t.cSystemTime() << |
231 | 231 |
"s, real: " << t.realTime() << "s"; |
232 | 232 |
return os; |
233 | 233 |
} |
234 | 234 |
|
235 | 235 |
///Class for measuring the cpu time and real time usage of the process |
236 | 236 |
|
237 | 237 |
///Class for measuring the cpu time and real time usage of the process. |
238 | 238 |
///It is quite easy-to-use, here is a short example. |
239 | 239 |
///\code |
240 | 240 |
/// #include<lemon/time_measure.h> |
241 | 241 |
/// #include<iostream> |
242 | 242 |
/// |
243 | 243 |
/// int main() |
244 | 244 |
/// { |
245 | 245 |
/// |
246 | 246 |
/// ... |
247 | 247 |
/// |
248 | 248 |
/// Timer t; |
249 | 249 |
/// doSomething(); |
250 | 250 |
/// std::cout << t << '\n'; |
251 | 251 |
/// t.restart(); |
252 | 252 |
/// doSomethingElse(); |
253 | 253 |
/// std::cout << t << '\n'; |
254 | 254 |
/// |
255 | 255 |
/// ... |
256 | 256 |
/// |
257 | 257 |
/// } |
258 | 258 |
///\endcode |
259 | 259 |
/// |
260 | 260 |
///The \ref Timer can also be \ref stop() "stopped" and |
261 | 261 |
///\ref start() "started" again, so it is possible to compute collected |
262 | 262 |
///running times. |
263 | 263 |
/// |
264 | 264 |
///\warning Depending on the operation system and its actual configuration |
265 | 265 |
///the time counters have a certain (10ms on a typical Linux system) |
266 | 266 |
///granularity. |
267 | 267 |
///Therefore this tool is not appropriate to measure very short times. |
268 | 268 |
///Also, if you start and stop the timer very frequently, it could lead to |
269 | 269 |
///distorted results. |
0 comments (0 inline)