]> git.ipfire.org Git - thirdparty/haproxy.git/commit
OPTIM: buffers: avoid a useless wrapping check for ofs == 0
authorWilly Tarreau <w@1wt.eu>
Fri, 18 Oct 2024 16:42:47 +0000 (18:42 +0200)
committerWilly Tarreau <w@1wt.eu>
Fri, 18 Oct 2024 16:42:47 +0000 (18:42 +0200)
commit84340d108be3963a37cd4640bf2bbe1b05e67e42
tree554c06558503c5976398c9ec899384ecfac0ceb6
parentfca212292ad3ce466c5ccf0c7f74bc23350d559a
OPTIM: buffers: avoid a useless wrapping check for ofs == 0

As mentioned in previous commit, b_peek_ofs() performs a wrapping check
but is often called with ofs == 0 as a constant. We can detect this case
with __builtin_const_p() so it makes sense to use it. A test shows a size
reduction of about 320 bytes, which is not much, but it happens in hot code
paths, and each 16 bytes reduction indicates an eliminated conditional
branch.

Some clear winners are ci_getblk_nc() (-48 bytes), h2c_dec_hdrs (-141B),
h1_copy_msg_data (-124B), tcpcheck_spop_expect_hello (-80B),
h1_parse_msg_data (-44B). These ones will definitely benefit from doing
less conditional jumps.
include/haproxy/buf.h