[pacman-dev] [PATCH 1/6] Simplify hash function to a single multiplication

Dan McGee dan at archlinux.org
Sat Dec 31 22:07:08 EST 2011


More than likely the compiler will do the three operation breakdown we
had here before (2 shifts + subtraction), but let the compiler do the
optimizations and make the actual operation more obvious. This actually
slightly shrinks the function binary size, likely due to instruction
reordering or something.

Signed-off-by: Dan McGee <dan at archlinux.org>
---

2^6 + 2^16 - 1

 lib/libalpm/util.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/lib/libalpm/util.c b/lib/libalpm/util.c
index fc0e056..2cce824 100644
--- a/lib/libalpm/util.c
+++ b/lib/libalpm/util.c
@@ -1145,7 +1145,7 @@ unsigned long _alpm_hash_sdbm(const char *str)
 		return hash;
 	}
 	while((c = *str++)) {
-		hash = c + (hash << 6) + (hash << 16) - hash;
+		hash = c + hash * 65599;
 	}
 
 	return hash;
-- 
1.7.8.1



More information about the pacman-dev mailing list