Files
mir_server/Gateway/common/statistic/time_stat_log.h
aixianling 5c9f1dae4a init
2025-01-09 17:45:40 +08:00

60 lines
1.6 KiB
C

#define DEBUG_LOGIC_TIME
#define DEBUG_LOG_INTERVAL 600000
#define DEBUG_LOG_MAX_TIME 500
#ifdef DEBUG_LOGIC_TIME
#define LOGTIME_BEGIN \
static int __LOG_TIME_LOGS[100] = { 0 }; \
int64_t __log_last_t, __log_curr_t; \
__log_curr_t = __log_last_t = _getTickCount(); \
int64_t __log_tick_t; \
int __log_diff_t; \
int __log_idx = 0; \
static int64_t __log_log_t = __log_curr_t + DEBUG_LOG_INTERVAL;
#define LOGTIME \
__log_tick_t = _getTickCount(); \
__log_diff_t = (int)(__log_tick_t - __log_last_t); \
if (__log_idx >= 0 && __log_idx < 100 && __log_diff_t > __LOG_TIME_LOGS[__log_idx]) \
{ \
__LOG_TIME_LOGS[__log_idx] = __log_diff_t; \
} \
__log_last_t = __log_tick_t; \
__log_idx ++;
#define SW_LOGTIME(__log_idx_) \
__log_tick_t = _getTickCount(); \
__log_diff_t = (int)(__log_tick_t - __log_last_t); \
if (__log_idx_ >= 0 && __log_idx_ < 100 && __log_diff_t > __LOG_TIME_LOGS[__log_idx_]) \
{ \
__LOG_TIME_LOGS[__log_idx_] = __log_diff_t; \
} \
__log_idx = __log_idx_;
#define LOGTIME_END(__log_fun, __log_max_time) \
if (__log_curr_t >= __log_log_t && __log_idx >= 0 && __log_idx < 100) \
{ \
bool __log_haslog = true; \
for (int i=0; i<__log_idx; i++) \
{ \
if (__LOG_TIME_LOGS[i] > __log_max_time) \
{ \
if (__log_haslog) { \
OutputMsg(rmError, "=============debug %s time:============", __log_fun); \
__log_haslog = false; \
} \
OutputMsg(rmError, "%d=%d", i, __LOG_TIME_LOGS[i]); \
} \
} \
memset(__LOG_TIME_LOGS, 0, sizeof(__LOG_TIME_LOGS)); \
__log_log_t = __log_curr_t + DEBUG_LOG_INTERVAL; \
}
#else
#define LOGTIME_BEGIN
#define LOGTIME
#define SW_LOGTIME(__log_idx_)
#define LOGTIME_END(__log_fun, __log_max_time)
#endif