From: Willy Tarreau Date: Mon, 8 Nov 2021 08:58:22 +0000 (+0100) Subject: OPTIM: halog: improve field parser speed for modern compilers X-Git-Tag: v2.5-dev14~38 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=fc76bbc0f54f5d09db1f3d56469478212bf0c7bc;p=thirdparty%2Fhaproxy.git 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%. --- diff --git a/admin/halog/halog.c b/admin/halog/halog.c index 79eff91453..5c0218b817 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