-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathScopedTimers.h
66 lines (54 loc) · 1.3 KB
/
ScopedTimers.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#pragma once
#include"BaseLib/Timestamp.h"
#include"BaseLib/Duration.h"
#include"BaseLib/Debug.h"
#include"BaseLib/Export.h"
namespace BaseLib {
class ScopedTimer
{
public:
ScopedTimer(IDebug debug)
: start_(Timestamp::Now())
, debug_(debug)
{ }
~ScopedTimer()
{
Duration elapsed = Timestamp::Now() - start_;
debug_ << "Time elapsed: " << elapsed.InMillis() << " ms";
}
Duration Elapsed() const
{
Duration elapsed = Timestamp::Now() - start_;
return Duration::FromMilliseconds(elapsed.InMillis());
}
private:
Timestamp start_;
IDebug debug_;
};
class ScopedCompareTimer
{
public:
ScopedCompareTimer(IDebug debug, Duration comparison)
: start_(Timestamp::Now())
, comparison_(comparison)
, debug_(debug)
{ }
~ScopedCompareTimer()
{
Duration elapsed = Timestamp::Now() - start_;
if(comparison_ != elapsed)
{
debug_ << "Elapsed " << elapsed.InMillis() << " != " << comparison_.InMillis() << " ms";
}
}
Duration Elapsed() const
{
Duration elapsed = Timestamp::Now() - start_;
return Duration::FromMilliseconds(elapsed.InMillis());
}
private:
Timestamp start_;
Duration comparison_;
IDebug debug_;
};
}