From: Willy Tarreau Date: Mon, 26 Nov 2007 19:15:35 +0000 (+0100) Subject: [OPTIM] small optimization on session_process_counters() X-Git-Tag: v1.3.14~44 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=30e7101137f17e95a650ed44a577b2c157185641;p=thirdparty%2Fhaproxy.git [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. --- diff --git a/src/session.c b/src/session.c index e7fd8bd762..594f7df1fa 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; + } } }