mt2  8bbb7ce09375b7fc0edeb89e1fe1dbb76bbd0555
timer.cpp
Go to the documentation of this file.
1 #include "timer.hpp"
2 #include <ctime>
3 #include <cstdio>
4 #include <cmath>
5 
6 Timer::Timer(unsigned long num_its, double auto_print):
7  start_time_(0),
8  last_print_(0),
9  num_its_(num_its),
10  cur_its_(0),
11  auto_print_(auto_print){
12  }
13 
14 void Timer::SetAutoPrint(double auto_print){
15  auto_print_ = auto_print;
16 }
17 
18 void Timer::SetNumIterations(unsigned long num_its){
19  num_its_=num_its;
20 }
21 
22 void Timer::Start(){
23  cur_its_=0;
24  time(&start_time_);
26 }
27 
29  ++cur_its_;
30  if(auto_print_>0){
31  time_t cur_time;
32  time(&cur_time);
33  if(difftime(cur_time, last_print_)>auto_print_){
35  }
36  }
37 }
38 
39 double Timer::GetRemainingTime() const{
40  if(cur_its_==0){
41  return 0.0;
42  }else{
43  time_t cur_time;
44  time(&cur_time);
45  return (difftime(cur_time,start_time_)*(num_its_-cur_its_))/cur_its_;
46  }
47 }
48 
50  int secs(static_cast<int>(floor(GetRemainingTime()+0.5)));
51  time_t endtime;
52  time(&endtime);
53  endtime+=secs;
54  const short hours(secs/3600);
55  secs-=3600*hours;
56  const short minutes(secs/60);
57  secs-=60*minutes;
58  printf("Iteration %10ld of %10ld. %4hd:",cur_its_,num_its_,hours);
59  if(minutes<10){
60  printf("0");
61  }
62  printf("%hd:",minutes);
63  if(secs<10){
64  printf("0");
65  }
66  printf("%d remaining. Expected finish: %s",secs, ctime(&endtime));
67  fflush(stdout);
68  time(&last_print_);
69 }
void SetAutoPrint(double auto_print)
Definition: timer.cpp:14
double GetRemainingTime() const
Definition: timer.cpp:39
unsigned long num_its_
Definition: timer.hpp:27
unsigned long cur_its_
Definition: timer.hpp:27
time_t last_print_
Definition: timer.hpp:26
time_t start_time_
Definition: timer.hpp:25
void Iterate()
Definition: timer.cpp:28
void SetNumIterations(unsigned long num_its)
Definition: timer.cpp:18
void Start()
Definition: timer.cpp:22
void PrintRemainingTime() const
Definition: timer.cpp:49
Timer(unsigned long num_its=0, double auto_print=0.)
Definition: timer.cpp:6
double auto_print_
Definition: timer.hpp:28