[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.
This commit is contained in:
Willy Tarreau 2007-11-26 20:15:35 +01:00
parent 583bc96606
commit 30e7101137

View File

@ -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->fe->bytes_in += bytes;
if (s->be != s->fe)
s->be->bytes_in += bytes;
if (s->srv)
s->srv->bytes_in += bytes;
s->logs.bytes_in = s->req->total;
if (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->rep && s->rep->total != s->logs.bytes_out) {
if (s->rep) {
bytes = s->rep->total - s->logs.bytes_out;
s->fe->bytes_out += bytes;
if (s->be != s->fe)
s->be->bytes_out += bytes;
if (s->srv)
s->srv->bytes_out += bytes;
s->logs.bytes_out = s->rep->total;
if (bytes) {
s->fe->bytes_out += bytes;
if (s->be != s->fe)
s->be->bytes_out += bytes;
if (s->srv)
s->srv->bytes_out += bytes;
}
}
}