mirror of
https://github.com/netsurf-browser/netsurf
synced 2024-12-16 01:02:36 +03:00
Improve logging interface to reduce overhead
This reduces logging overhead by only calling the log output function once instead of three times. Additionally the nslog_gettime interface no longer needs to be exported and the static function is directly inlined further reducing function call overhead. Finally the appending of a newline uses fputc instead of a full printf call which is considerably more simple and further reduces overhead time.
This commit is contained in:
parent
4324bf535f
commit
faf9b9d919
16
utils/log.c
16
utils/log.c
@ -122,7 +122,12 @@ timeval_subtract(struct timeval *result, struct timeval *x, struct timeval *y)
|
||||
return x->tv_sec < y->tv_sec;
|
||||
}
|
||||
|
||||
const char *nslog_gettime(void)
|
||||
/**
|
||||
* Obtain a formatted string suitable for prepending to a log message
|
||||
*
|
||||
* \return formatted string of the time since first log call
|
||||
*/
|
||||
static const char *nslog_gettime(void)
|
||||
{
|
||||
static struct timeval start_tv;
|
||||
static char buff[32];
|
||||
@ -143,16 +148,19 @@ const char *nslog_gettime(void)
|
||||
return buff;
|
||||
}
|
||||
|
||||
void nslog_log(const char *format, ...)
|
||||
void nslog_log(const char *file, const char *func, int ln, const char *format, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
fprintf(logf, "%s %s:%i %s: ", nslog_gettime(), file, ln, func);
|
||||
|
||||
va_start(ap, format);
|
||||
|
||||
vfprintf(stderr, format, ap);
|
||||
vfprintf(logf, format, ap);
|
||||
|
||||
va_end(ap);
|
||||
|
||||
fputc('\n', logf);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
14
utils/log.h
14
utils/log.h
@ -47,14 +47,7 @@ extern nserror nslog_init(nslog_ensure_t *ensure, int *pargc, char **argv);
|
||||
# define LOG(format, ...) ((void) 0)
|
||||
#else
|
||||
|
||||
/**
|
||||
* Obtain a formatted string suitable for prepending to a log message
|
||||
*
|
||||
* \return formatted string of the time since first log call
|
||||
*/
|
||||
extern const char *nslog_gettime(void);
|
||||
|
||||
extern void nslog_log(const char *format, ...) __attribute__ ((format (printf, 1, 2)));
|
||||
extern void nslog_log(const char *file, const char *func, int ln, const char *format, ...) __attribute__ ((format (printf, 4, 5)));
|
||||
|
||||
# ifdef __GNUC__
|
||||
# define LOG_FN __PRETTY_FUNCTION__
|
||||
@ -70,10 +63,7 @@ extern void nslog_log(const char *format, ...) __attribute__ ((format (printf, 1
|
||||
#define LOG(format, args...) \
|
||||
do { \
|
||||
if (verbose_log) { \
|
||||
nslog_log("%s " __FILE__ " %s %i: ", \
|
||||
nslog_gettime(), LOG_FN, LOG_LN); \
|
||||
nslog_log(format , ##args); \
|
||||
nslog_log("\n"); \
|
||||
nslog_log(__FILE__, LOG_FN, LOG_LN, format , ##args); \
|
||||
} \
|
||||
} while(0)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user