summaryrefslogtreecommitdiff
path: root/src/hash.cc
diff options
context:
space:
mode:
authorMaxime Coste <mawww@kakoune.org>2024-02-06 21:57:17 +1100
committerMaxime Coste <mawww@kakoune.org>2024-02-06 21:57:17 +1100
commit04a96b059faac8100a291e56bfbdb1962d53d4e1 (patch)
tree82191cd45870634637c4a7ee0f437d5fd52111e3 /src/hash.cc
parent53d9b9b67650a2b34345d9153bef2a01cb75c418 (diff)
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.
Diffstat (limited to 'src/hash.cc')
-rw-r--r--src/hash.cc10
1 files changed, 5 insertions, 5 deletions
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<const uint8_t*>(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);
}};
}