From fc76bbc0f54f5d09db1f3d56469478212bf0c7bc Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Mon, 8 Nov 2021 09:58:22 +0100 Subject: [PATCH] OPTIM: halog: improve field parser speed for modern compilers Modern compilers were producing producing less efficient code in the field_start() loop, by not emitting two conditional jumps for a single test. However by reordering the test we can merge the optimal case and the default one and get back to good performance so let's simplify the test. This improves the parsing speed by 5%. --- admin/halog/halog.c | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/admin/halog/halog.c b/admin/halog/halog.c index 79eff9145..5c0218b81 100644 --- a/admin/halog/halog.c +++ b/admin/halog/halog.c @@ -265,12 +265,10 @@ const char *field_start(const char *p, int field) /* skip spaces */ while (1) { c = *(p++); - if (c > ' ') - break; - if (c == ' ') - continue; if (!c) /* end of line */ return p-1; + if (c == ' ') + continue; /* other char => new field */ break; } @@ -283,12 +281,10 @@ const char *field_start(const char *p, int field) /* skip this field */ while (1) { c = *(p++); - if (c == ' ') - break; - if (c > ' ') - continue; if (c == '\0') return p - 1; + if (c == ' ') + break; } } #else