From acdb052030d6e537e51d8b42e07b2a9e71e6ee42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Goddard=20Rosa?= Date: Sun, 28 Mar 2010 21:18:56 -0300 Subject: stdlib: optimize bsearch() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ... by checking most probable condition first (elements do differ) Change-Id: I424eab9c32a6d9eb82b686ca04025ec8c9097035 Signed-off-by: André Goddard Rosa --- libc/stdlib/bsearch.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libc/stdlib/bsearch.c b/libc/stdlib/bsearch.c index 8193d27..7eb6325 100644 --- a/libc/stdlib/bsearch.c +++ b/libc/stdlib/bsearch.c @@ -56,11 +56,11 @@ bsearch(const void *key, const void *base0, size_t nmemb, size_t size, for (lim = nmemb; lim != 0; lim >>= 1) { p = base + (lim >> 1) * size; cmp = (*compar)(key, p); - if (cmp == 0) - return ((void *)p); if (cmp > 0) { /* key > p: move right */ base = (char *)p + size; lim--; + } else if (cmp == 0) { + return ((void *)p); } /* else move left */ } return (NULL); -- cgit v1.1