OpenClonk
C4Stat.h
Go to the documentation of this file.
1
/*
2
* OpenClonk, http://www.openclonk.org
3
*
4
* Copyright (c) 2001-2009, RedWolf Design GmbH, http://www.clonk.de/
5
* Copyright (c) 2013-2016, The OpenClonk Team and contributors
6
*
7
* Distributed under the terms of the ISC license; see accompanying file
8
* "COPYING" for details.
9
*
10
* "Clonk" is a registered trademark of Matthes Bender, used with permission.
11
* See accompanying file "TRADEMARK" for details.
12
*
13
* To redistribute this file separately, substitute the full license texts
14
* for the above references.
15
*/
16
// statistics
17
#ifndef INC_C4Stat
18
#define INC_C4Stat
19
20
class
C4Stat
;
21
22
// *** main statistic class
23
// should only been constructed once per application
24
class
C4MainStat
25
{
26
friend
class
C4Stat
;
27
28
public
:
29
C4MainStat
();
30
~C4MainStat
();
31
32
void
Show
();
33
void
ShowPart
(
int
FrameCounter);
34
35
void
Reset
();
36
void
ResetPart
();
37
38
protected
:
39
C4Stat
*
pFirst
{
nullptr
};
40
41
void
RegisterStat
(
C4Stat
* pStat);
42
void
UnRegStat
(
C4Stat
* pStat);
43
};
44
45
46
// *** one statistic.
47
// Holds the data about one "checkpoint" in code
48
// registers himself to C4MainStat when Start() is called the first time
49
class
C4Stat
50
{
51
friend
class
C4MainStat
;
52
53
public
:
54
C4Stat
(
const
char
*
strName
);
55
~C4Stat
();
56
57
inline
void
Start
()
58
{
59
if
(!
iStartCalled
)
60
tStartTime
=
C4TimeMilliseconds::Now
();
61
iCount
++;
62
iCountPart
++;
63
iStartCalled
++;
64
}
65
66
inline
void
Stop
()
67
{
68
assert(
iStartCalled
);
69
iStartCalled
--;
70
if
(!
iStartCalled
&&
iCount
>= 100)
71
{
72
uint32_t tTime =
C4TimeMilliseconds::Now
() -
tStartTime
;
73
74
tTimeSum
+= tTime;
75
tTimeSumPart
+= tTime;
76
}
77
}
78
79
void
Reset
();
80
void
ResetPart
();
81
82
static
C4MainStat
*
getMainStat
();
83
84
protected
:
85
86
// used by C4MainStat
87
C4Stat
*
pNext
;
88
C4Stat
*
pPrev
;
89
90
C4TimeMilliseconds
tStartTime
;
91
92
// start-call depth
93
unsigned
int
iStartCalled
;
94
95
96
// ** statistic data
97
98
// sum of times
99
uint32_t
tTimeSum
;
100
101
// number of starts called
102
unsigned
int
iCount
;
103
104
// ** statistic data (partial stat)
105
106
// sum of times
107
uint32_t
tTimeSumPart
;
108
109
// number of starts called
110
unsigned
int
iCountPart
;
111
112
113
// name of statistic
114
const
char
*
strName
;
115
116
// registred?
117
bool
bRegistred
;
118
119
};
120
121
// *** some directives
122
#ifdef STAT
123
124
// used to create and start a new C4Stat object
125
#define C4ST_STARTNEW(StatName, strName) static C4Stat StatName(strName); StatName.Start();
126
127
// used to create a new C4Stat object
128
#define C4ST_NEW(StatName, strName) C4Stat StatName(strName);
129
130
// used to start an existing C4Stat object
131
#define C4ST_START(StatName) StatName.Start();
132
133
// used to stop an existing C4Stat object
134
#define C4ST_STOP(StatName) StatName.Stop();
135
136
// shows the statistic (to log)
137
#define C4ST_SHOWSTAT C4Stat::getMainStat()->Show();
138
139
// shows the statistic (to log)
140
#define C4ST_SHOWPARTSTAT(FrameCounter) C4Stat::getMainStat()->ShowPart(FrameCounter);
141
142
// resets the whole statistic
143
#define C4ST_RESET C4Stat::getMainStat()->Reset();
144
145
// resets the partial statistic
146
#define C4ST_RESETPART C4Stat::getMainStat()->ResetPart();
147
148
#else
149
150
#define C4ST_STARTNEW(StatName, strName)
151
#define C4ST_NEW(StatName, strName)
152
#define C4ST_START(StatName)
153
#define C4ST_STOP(StatName)
154
#define C4ST_SHOWSTAT
155
#define C4ST_SHOWPARTSTAT(FrameCounter)
156
#define C4ST_RESET
157
#define C4ST_RESETPART
158
159
#endif
160
161
#endif
// INC_C4Stat
C4MainStat
Definition:
C4Stat.h:25
C4MainStat::~C4MainStat
~C4MainStat()
C4MainStat::Show
void Show()
Definition:
C4Stat.cpp:81
C4MainStat::ShowPart
void ShowPart(int FrameCounter)
Definition:
C4Stat.cpp:147
C4MainStat::ResetPart
void ResetPart()
Definition:
C4Stat.cpp:74
C4MainStat::pFirst
C4Stat * pFirst
Definition:
C4Stat.h:39
C4MainStat::RegisterStat
void RegisterStat(C4Stat *pStat)
Definition:
C4Stat.cpp:27
C4MainStat::C4MainStat
C4MainStat()
C4MainStat::Reset
void Reset()
Definition:
C4Stat.cpp:68
C4MainStat::UnRegStat
void UnRegStat(C4Stat *pStat)
Definition:
C4Stat.cpp:45
C4Stat
Definition:
C4Stat.h:50
C4Stat::pPrev
C4Stat * pPrev
Definition:
C4Stat.h:88
C4Stat::Stop
void Stop()
Definition:
C4Stat.h:66
C4Stat::iCountPart
unsigned int iCountPart
Definition:
C4Stat.h:110
C4Stat::iCount
unsigned int iCount
Definition:
C4Stat.h:102
C4Stat::getMainStat
static C4MainStat * getMainStat()
Definition:
C4Stat.cpp:192
C4Stat::Start
void Start()
Definition:
C4Stat.h:57
C4Stat::Reset
void Reset()
Definition:
C4Stat.cpp:176
C4Stat::strName
const char * strName
Definition:
C4Stat.h:114
C4Stat::ResetPart
void ResetPart()
Definition:
C4Stat.cpp:186
C4Stat::tStartTime
C4TimeMilliseconds tStartTime
Definition:
C4Stat.h:90
C4Stat::bRegistred
bool bRegistred
Definition:
C4Stat.h:117
C4Stat::iStartCalled
unsigned int iStartCalled
Definition:
C4Stat.h:93
C4Stat::C4Stat
C4Stat(const char *strName)
Definition:
C4Stat.cpp:164
C4Stat::pNext
C4Stat * pNext
Definition:
C4Stat.h:87
C4Stat::tTimeSumPart
uint32_t tTimeSumPart
Definition:
C4Stat.h:107
C4Stat::~C4Stat
~C4Stat()
Definition:
C4Stat.cpp:171
C4Stat::tTimeSum
uint32_t tTimeSum
Definition:
C4Stat.h:99
C4TimeMilliseconds
Definition:
C4TimeMilliseconds.h:35
C4TimeMilliseconds::Now
static C4TimeMilliseconds Now()
Definition:
C4TimeMilliseconds.cpp:39
openclonk
src
lib
C4Stat.h
Generated on Fri May 16 2025 04:33:18 for OpenClonk by
1.9.1