ASL 0.1.7
Advanced Simulation Library
aslTimer.h
Go to the documentation of this file.
1/*
2 * Advanced Simulation Library <http://asl.org.il>
3 *
4 * Copyright 2015 Avtech Scientific <http://avtechscientific.com>
5 *
6 *
7 * This file is part of Advanced Simulation Library (ASL).
8 *
9 * ASL is free software: you can redistribute it and/or modify it
10 * under the terms of the GNU Affero General Public License as
11 * published by the Free Software Foundation, version 3 of the License.
12 *
13 * ASL is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU Affero General Public License for more details.
17 *
18 * You should have received a copy of the GNU Affero General Public License
19 * along with ASL. If not, see <http://www.gnu.org/licenses/>.
20 *
21 */
22
23
24#ifndef ASLTIMER_H
25#define ASLTIMER_H
26
27#include <chrono>
28#include <thread>
29
30namespace asl{
31using namespace std::chrono;
32
34 class Timer {
35 private:
36 high_resolution_clock::time_point realTimeMark;
37 duration<double> realTimeElapsed;
38
39 clock_t processorTimeMark;
40 double processorTimeElapsed;
41 public:
42 inline Timer() : processorTimeElapsed(0), realTimeElapsed(0) {};
43 inline void start() {processorTimeMark = clock(); realTimeMark = high_resolution_clock::now();}
44 inline void stop() {processorTimeElapsed += (double)(clock() - processorTimeMark); realTimeElapsed += duration_cast<duration<double>>(high_resolution_clock::now() - realTimeMark);}
45 inline const double realTime() const{return realTimeElapsed.count();}
46 inline const double processorTime() const{return (double)processorTimeElapsed/CLOCKS_PER_SEC;}
47 inline const double processorLoad() const{return processorTime()/realTime();}
48 inline void reset() {processorTimeElapsed = 0; realTimeElapsed = duration<double>(0);}
50 inline const double estimatedDuration(double completeness) {return realTimeElapsed.count()/completeness;}
52 inline const double estimatedRemainder(double completeness) {return (1. - completeness) * estimatedDuration(completeness);}
53 };
54
56 inline void sleep(unsigned int span)
57 {
58 std::this_thread::sleep_for(std::chrono::milliseconds(span));
59 }
60
61} //namespace acl
62
63#endif // ASLTIMER_H
const double realTime() const
Definition: aslTimer.h:45
void stop()
Definition: aslTimer.h:44
const double processorTime() const
Definition: aslTimer.h:46
const double estimatedDuration(double completeness)
Returns estimated duration of the current task based on its current completeness [0....
Definition: aslTimer.h:50
void start()
Definition: aslTimer.h:43
void reset()
Definition: aslTimer.h:48
const double processorLoad() const
Definition: aslTimer.h:47
const double estimatedRemainder(double completeness)
Returns estimated time till finishing current task based on its current completeness [0....
Definition: aslTimer.h:52
Advanced Simulation Library.
Definition: aslDataInc.h:31
void sleep(unsigned int span)
Blocks execution of the calling thread for the time span (in milliseconds)
Definition: aslTimer.h:56