ASL
0.1.7
Advanced Simulation Library
Toggle main menu visibility
Loading...
Searching...
No Matches
src
utilities
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
30
namespace
asl
{
31
using 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
asl::Timer::realTime
const double realTime() const
Definition
aslTimer.h:45
asl::Timer::stop
void stop()
Definition
aslTimer.h:44
asl::Timer::processorTime
const double processorTime() const
Definition
aslTimer.h:46
asl::Timer::estimatedDuration
const double estimatedDuration(double completeness)
Returns estimated duration of the current task based on its current completeness [0....
Definition
aslTimer.h:50
asl::Timer::Timer
Timer()
Definition
aslTimer.h:42
asl::Timer::start
void start()
Definition
aslTimer.h:43
asl::Timer::reset
void reset()
Definition
aslTimer.h:48
asl::Timer::processorLoad
const double processorLoad() const
Definition
aslTimer.h:47
asl::Timer::estimatedRemainder
const double estimatedRemainder(double completeness)
Returns estimated time till finishing current task based on its current completeness [0....
Definition
aslTimer.h:52
asl
Advanced Simulation Library.
Definition
aslDataInc.h:31
asl::sleep
void sleep(unsigned int span)
Blocks execution of the calling thread for the time span (in milliseconds).
Definition
aslTimer.h:56
Generated by
1.17.0