From 04a96b059faac8100a291e56bfbdb1962d53d4e1 Mon Sep 17 00:00:00 2001 From: Maxime Coste Date: Tue, 6 Feb 2024 21:57:17 +1100 Subject: Use different hash algorithms for strings and file hashing For hash map, using fnv1a is faster as it is a much simpler algorithm we can afford to inline. For files murmur3 should win as it processes bytes 4 by 4. --- src/hash.cc | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src/hash.cc') diff --git a/src/hash.cc b/src/hash.cc index 567d8733..3b9fb018 100644 --- a/src/hash.cc +++ b/src/hash.cc @@ -27,8 +27,8 @@ static inline uint32_t fmix(uint32_t h) return h; } -// murmur3 hash, based on https://github.com/PeterScott/murmur3 -size_t hash_data(const char* input, size_t len) +// based on https://github.com/PeterScott/murmur3 +size_t murmur3(const char* input, size_t len) { const uint8_t* data = reinterpret_cast(input); uint32_t hash = 0x1235678; @@ -73,13 +73,13 @@ size_t hash_data(const char* input, size_t len) UnitTest test_murmur_hash{[] { { constexpr char data[] = "Hello, World!"; - kak_assert(hash_data(data, strlen(data)) == 0xf816f95b); + kak_assert(murmur3(data, strlen(data)) == 0xf816f95b); } { constexpr char data[] = "xxxxxxxxxxxxxxxxxxxxxxxxxxxx"; - kak_assert(hash_data(data, strlen(data)) == 3551113186); + kak_assert(murmur3(data, strlen(data)) == 3551113186); } - kak_assert(hash_data("", 0) == 2572747774); + kak_assert(murmur3("", 0) == 2572747774); }}; } -- cgit v1.2.3