From ce0f28c04a518416af8b94daef550ec86f6b068a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nils=20O=2E=20Sel=C3=A5sdal?= Date: Fri, 17 May 2013 03:27:09 +0200 Subject: [PATCH] Remove murmur hash, it's endian dependent and has unreasonable alignment requirements --- include/ucore/hash.h | 3 --- src/murmurhash.c | 55 -------------------------------------------- 2 files changed, 58 deletions(-) delete mode 100644 src/murmurhash.c diff --git a/include/ucore/hash.h b/include/ucore/hash.h index 6c0c3d0..6c90469 100644 --- a/include/ucore/hash.h +++ b/include/ucore/hash.h @@ -22,9 +22,6 @@ uc_hash64shift(uint64_t key); uint32_t uc_hashuint(uint32_t a); -uint32_t -uc_murmurmash2(const void *key, int len, uint32_t seed ); - uint32_t uc_pjwhash(const char *str,size_t len); diff --git a/src/murmurhash.c b/src/murmurhash.c deleted file mode 100644 index d98d690..0000000 --- a/src/murmurhash.c +++ /dev/null @@ -1,55 +0,0 @@ -#include "ucore/hash.h" - -// 'm' and 'r' are mixing constants generated offline. -// They're not really 'magic', they just happen to work well. -#define m 0x5bd1e995 -#define r 24 - -uint32_t -uc_murmurmash2(const void *key, int len, uint32_t seed ) -{ - - - // Initialize the hash to a 'random' value - - uint32_t h = seed ^ len; - - // Mix 4 bytes at a time into the hash - - const unsigned char * data = (const unsigned char *)key; - - while (len >= 4) - { - uint32_t k = *(const uint32_t *)data; - - k *= m; - k ^= k >> r; - k *= m; - - h *= m; - h ^= k; - - data += 4; - len -= 4; - } - - // Handle the last few bytes of the input array - - switch (len) - { - case 3: h ^= data[2] << 16; - case 2: h ^= data[1] << 8; - case 1: h ^= data[0]; - h *= m; - }; - - // Do a few final mixes of the hash to ensure the last few - // bytes are well-incorporated. - - h ^= h >> 13; - h *= m; - h ^= h >> 15; - - return h; -} -