Frobby  0.9.5
Timer.cpp
Go to the documentation of this file.
1 /* Frobby: Software for monomial ideal computations.
2  Copyright (C) 2007 Bjarke Hammersholt Roune (www.broune.com)
3 
4  This program is free software; you can redistribute it and/or modify
5  it under the terms of the GNU General Public License as published by
6  the Free Software Foundation; either version 2 of the License, or
7  (at your option) any later version.
8 
9  This program is distributed in the hope that it will be useful,
10  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  GNU General Public License for more details.
13 
14  You should have received a copy of the GNU General Public License
15  along with this program. If not, see http://www.gnu.org/licenses/.
16 */
17 #include "stdinc.h"
18 #include "Timer.h"
19 
20 unsigned long Timer::getMilliseconds() const {
21  const double floatSpan = clock() - _clocksAtReset;
22  const double floatMilliseconds = 1000 * (floatSpan / CLOCKS_PER_SEC);
23  unsigned long milliseconds = static_cast<unsigned long>(floatMilliseconds);
24  if (floatMilliseconds - milliseconds >= 0.5)
25  ++milliseconds;
26  return milliseconds;
27 }
28 
29 void Timer::print(FILE* out) const {
30  unsigned long milliseconds = getMilliseconds();
31  unsigned long seconds = milliseconds / 1000;
32  unsigned long minutes = seconds / 60;
33  unsigned long hours = minutes / 60;
34 
35  milliseconds %= 1000;
36  seconds %= 60;
37  minutes %= 60;
38 
39  fputc('(', out);
40  if (hours != 0)
41  fprintf(out, "%luh", hours);
42  if (minutes != 0 || hours != 0)
43  fprintf(out, "%lum", minutes);
44  fprintf(out, "%lu.%03lus)", seconds, milliseconds);
45 }
void print(FILE *out) const
Prints the elapsed time in a human readable format.
Definition: Timer.cpp:29
unsigned long getMilliseconds() const
Returns the number of CPU milliseconds since the last reset.
Definition: Timer.cpp:20
std::clock_t _clocksAtReset
Definition: Timer.h:43