MINOR: hpack: simplify the len to bytes conversion

The len-to-bytes conversion can be slightly simplified and optimized
by hardcoding a tree lookup. Just doing this increases by 1% the
request rate on H2. It could be made almost branch-free by using
fls() but it looks overkill for most situations since most headers
are very short.
This commit is contained in:
Willy Tarreau 2018-12-10 13:36:56 +01:00
parent 2df026fbce
commit 1526f1942c

View File

@ -43,13 +43,18 @@
*/
static inline int len_to_bytes(size_t len)
{
if (len < 127)
ssize_t slen = len;
slen -= 127;
if (__builtin_expect(slen < 0, 1))
return 1;
if (len < 127 + (1 << 7))
if (slen < (1 << 14)) {
if (__builtin_expect(slen < (1 << 7), 1))
return 2;
if (len < 127 + (1 << 14))
else
return 3;
if (len < 127 + (1 << 21))
}
if (slen < (1 << 21))
return 4;
return 0;
}