From 30e7101137f17e95a650ed44a577b2c157185641 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Mon, 26 Nov 2007 20:15:35 +0100 Subject: [PATCH] [OPTIM] small optimization on session_process_counters() It was possible to slightly reduce the size and the number of operations in session_process_counters(). Two 64 bit comparisons were removed, reducing the code by 98 bytes on x86 due to the lack of registers. The net observed performance gain is almost 2%, which cannot be attributed to those optimizations, but more likely to induced changes in code alignment in other functions. --- src/session.c | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/src/session.c b/src/session.c index e7fd8bd..594f7df 100644 --- a/src/session.c +++ b/src/session.c @@ -102,36 +102,36 @@ int init_session() return pool2_session != NULL; } -void session_process_counters(struct session *s) { - +void session_process_counters(struct session *s) +{ unsigned long long bytes; - if (s->req && s->req->total != s->logs.bytes_in) { + if (s->req) { bytes = s->req->total - s->logs.bytes_in; + s->logs.bytes_in = s->req->total; + if (bytes) { + s->fe->bytes_in += bytes; - s->fe->bytes_in += bytes; - - if (s->be != s->fe) - s->be->bytes_in += bytes; - - if (s->srv) - s->srv->bytes_in += bytes; + if (s->be != s->fe) + s->be->bytes_in += bytes; - s->logs.bytes_in = s->req->total; + if (s->srv) + s->srv->bytes_in += bytes; + } } - if (s->rep && s->rep->total != s->logs.bytes_out) { + if (s->rep) { bytes = s->rep->total - s->logs.bytes_out; + s->logs.bytes_out = s->rep->total; + if (bytes) { + s->fe->bytes_out += bytes; - s->fe->bytes_out += bytes; - - if (s->be != s->fe) - s->be->bytes_out += bytes; - - if (s->srv) - s->srv->bytes_out += bytes; + if (s->be != s->fe) + s->be->bytes_out += bytes; - s->logs.bytes_out = s->rep->total; + if (s->srv) + s->srv->bytes_out += bytes; + } } } -- 1.7.10.4