Pol  Revision:cb584c9
profile.h
Go to the documentation of this file.
1 
8 #ifndef PROFILE_H
9 #define PROFILE_H
10 
11 #include "../clib/rawtypes.h"
12 #include <atomic>
13 #include <cstddef>
14 #include <ctime>
15 
16 namespace Pol
17 {
18 namespace Core
19 {
20 #define DEF_PROFILEVAR( counter ) \
21  unsigned int prf_##counter, prf_last_##counter, prf_last_##counter##_per_min
22 
23 #define CLOCK_PROFILEVAR( timer ) \
24  clock_t tmr_##timer##_clocks_this_min, tmr_##timer##_clocks_last_min, tmr_##timer##_clock_start
25 
27 {
28  DEF_PROFILEVAR( events );
29  DEF_PROFILEVAR( skill_checks );
30  DEF_PROFILEVAR( combat_operations );
31  DEF_PROFILEVAR( los_checks );
32  DEF_PROFILEVAR( polmap_walkheight_calculations );
33  DEF_PROFILEVAR( uomap_walkheight_calculations );
34  DEF_PROFILEVAR( mobile_movements );
35  DEF_PROFILEVAR( error_creations );
36  DEF_PROFILEVAR( tasks_ontime );
37  DEF_PROFILEVAR( tasks_late );
38  DEF_PROFILEVAR( tasks_late_ticks );
39  DEF_PROFILEVAR( scripts_ontime );
40  DEF_PROFILEVAR( scripts_late );
41  DEF_PROFILEVAR( scripts_late_ticks );
42  DEF_PROFILEVAR( scheduler_passes );
43  DEF_PROFILEVAR( noactivity_scheduler_passes );
44  DEF_PROFILEVAR( npc_searches );
45  DEF_PROFILEVAR( container_adds );
46  DEF_PROFILEVAR( container_removes );
47 
48  CLOCK_PROFILEVAR( npc_search );
49 
51  size_t last_rpm;
52 
53  // unsigned int instructions;
55  size_t last_sipm;
56 
59  size_t last_scpm;
60 
64  size_t last_sysload;
65 
67  size_t last_cputime;
68 
71  size_t last_sppm;
72 
73  // unsigned int scheduler_passes, last_scheduler_passes;
74  // unsigned int last_schm;
75 
76  std::atomic<size_t> script_passes_activity;
77  std::atomic<size_t> script_passes_noactivity;
80 
83 };
84 }
85 #define INC_PROFILEVAR( counter ) ++Core::stateManager.profilevars.prf_##counter
86 #define SET_PROFILEVAR( counter, newvalue ) Core::stateManager.profilevars.prf_##counter = newvalue
87 #define INC_PROFILEVAR_BY( counter, amount ) Core::stateManager.profilevars.prf_##counter += amount
88 
89 #define TICK_PROFILEVAR( counter ) \
90  do \
91  { \
92  Core::stateManager.profilevars.prf_last_##counter##_per_min = \
93  Core::stateManager.profilevars.prf_##counter - \
94  Core::stateManager.profilevars.prf_last_##counter; \
95  Core::stateManager.profilevars.prf_last_##counter = \
96  Core::stateManager.profilevars.prf_##counter; \
97  } while ( 0 )
98 
99 #define GET_PROFILEVAR( counter ) Core::stateManager.profilevars.prf_##counter
100 #define GET_PROFILEVAR_PER_MIN( counter ) \
101  Core::stateManager.profilevars.prf_last_##counter##_per_min
102 
103 #define START_PROFILECLOCK( timer ) \
104  Core::stateManager.profilevars.tmr_##timer##_clock_start = clock()
105 #define STOP_PROFILECLOCK( timer ) \
106  Core::stateManager.profilevars.tmr_##timer##_clocks_this_min += \
107  clock() - Core::stateManager.profilevars.tmr_##timer##_clock_start
108 #define ROLL_PROFILECLOCK( timer ) \
109  do \
110  { \
111  Core::stateManager.profilevars.tmr_##timer##_clocks_last_min = \
112  Core::stateManager.profilevars.tmr_##timer##_clocks_this_min; \
113  Core::stateManager.profilevars.tmr_##timer##_clocks_this_min = 0; \
114  } while ( 0 )
115 #define GET_PROFILECLOCK( timer ) Core::stateManager.profilevars.tmr_##timer##_clocks_last_min
116 #define GET_PROFILECLOCK_MS( timer ) \
117  ( static_cast<unsigned int>( Core::stateManager.profilevars.tmr_##timer##_clocks_last_min * \
118  1000.0 / Core::CLOCKS_PER_SEC ) )
119 }
120 #endif
size_t last_script_passes_activity
Definition: profile.h:78
CLOCK_PROFILEVAR(npc_search)
size_t last_mapcache_misses
Definition: profile.h:82
size_t last_nonbusy_sysload_cycles
Definition: profile.h:62
std::atomic< size_t > script_passes_activity
Definition: profile.h:76
size_t last_script_passes_noactivity
Definition: profile.h:79
unsigned long long u64
Definition: rawtypes.h:38
size_t mapcache_misses
Definition: profile.h:82
size_t nonbusy_sysload_cycles
Definition: profile.h:62
size_t last_sysload_nprocs
Definition: profile.h:63
size_t last_mapcache_hits
Definition: profile.h:81
size_t last_busy_sysload_cycles
Definition: profile.h:61
std::atomic< size_t > script_passes_noactivity
Definition: profile.h:77
Definition: berror.cpp:12
size_t busy_sysload_cycles
Definition: profile.h:61