From df1eb5912f1bccf6c3831cfa308ff3d2c8693d2c Mon Sep 17 00:00:00 2001 From: Sebastian Reimers Date: Mon, 25 Jul 2022 17:28:02 +0200 Subject: [PATCH] hash: add hash_fast_murmur() --- include/re_hash.h | 1 + src/hash/func.c | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/include/re_hash.h b/include/re_hash.h index cf9e4f149..2c1dbdab0 100644 --- a/include/re_hash.h +++ b/include/re_hash.h @@ -33,3 +33,4 @@ uint32_t hash_joaat_pl(const struct pl *pl); uint32_t hash_joaat_pl_ci(const struct pl *pl); uint32_t hash_fast(const char *k, size_t len); uint32_t hash_fast_str(const char *str); +uint32_t hash_fast_murmur(uint32_t key); diff --git a/src/hash/func.c b/src/hash/func.c index 10a8d9202..935342125 100644 --- a/src/hash/func.c +++ b/src/hash/func.c @@ -185,3 +185,22 @@ uint32_t hash_fast_str(const char *str) return h; } + + +/** + * Calculate hash-value using modified murmur (fast finalize part) + * + * @param key Key value + * + * @return Calculated hash-value + */ +uint32_t hash_fast_murmur(uint32_t key) +{ + key ^= key >> 16; + key *= 0x85ebca6b; + key ^= key >> 13; + key *= 0xc2b2ae35; + key ^= key >> 16; + + return key; +}