From 88bdf4b96fd73a17744461078c62c01eba458354 Mon Sep 17 00:00:00 2001 From: Leonid Yuriev Date: Mon, 1 Feb 2021 00:39:52 +0300 Subject: [PATCH] mdbx: avoid branches inside `bsearch()` loop. Related for https://github.com/erthink/libmdbx/issues/132 Change-Id: Ia843556cc7052e5081a98f56b43fd80e2d0a40c7 --- src/core.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/core.c b/src/core.c index c8345c23..94188ad8 100644 --- a/src/core.c +++ b/src/core.c @@ -2698,10 +2698,10 @@ static int lcklist_detach_locked(MDBX_env *env) { const unsigned whole = length; \ length >>= 1; \ const TYPE_LIST *const middle = first + length; \ - if (CMP(*middle, item)) { \ - first = middle + 1; \ - length = whole - length - 1; \ - } \ + const unsigned left = whole - length - 1; \ + const bool cmp = CMP(*middle, item); \ + length = cmp ? left : length; \ + first = cmp ? middle + 1 : first; \ } \ \ switch (length) { \