[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 e7fd8bd..594f7df 100644
--- a/src/session.c
+++ b/src/session.c
@@ -102,36 +102,36 @@
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;
+ s->logs.bytes_in = s->req->total;
+ if (bytes) {
+ s->fe->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->fe->bytes_out += bytes;
-
- if (s->be != s->fe)
- s->be->bytes_out += bytes;
+ s->logs.bytes_out = s->rep->total;
+ if (bytes) {
+ s->fe->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;
+ }
}
}