Jelle Raaijmakers
1745926fc6
AK+Everywhere: Use MurmurHash3 for int/u64 hashing
...
Rework our hash functions a bit for significant better performance:
* Rename int_hash to u32_hash to mirror u64_hash.
* Make pair_int_hash call u64_hash instead of multiple u32_hash()es.
* Implement MurmurHash3's fmix32 and fmix64 for u32_hash and u64_hash.
On my machine, this speeds up u32_hash by 20%, u64_hash by ~290%, and
pair_int_hash by ~260%.
We lose the property that an input of 0 results in something that is not
0. I've experimented with an offset to both hash functions, but it
resulted in a measurable performance degradation for u64_hash. If
there's a good use case for 0 not to result in 0, we can always add in
that offset as a countermeasure in the future.
2026-02-20 22:47:24 +01:00
..
2026-02-20 22:47:24 +01:00
2026-02-13 18:34:24 +01:00
2025-10-10 15:37:45 +02:00
2025-10-10 15:37:45 +02:00
2026-01-23 16:23:06 +01:00
2026-01-23 16:23:06 +01:00
2025-11-28 18:32:48 +01:00
2026-01-22 17:38:15 +01:00
2025-03-22 17:49:38 +01:00
2026-02-17 10:48:09 -05:00
2025-06-25 22:54:48 +12:00
2025-06-25 22:54:48 +12:00
2026-02-17 10:48:09 -05:00
2026-02-20 22:47:24 +01:00
2026-01-22 17:38:15 +01:00
2025-02-12 12:03:30 -05:00
2025-08-06 15:21:03 +02:00
2025-11-28 18:32:48 +01:00
2025-12-03 12:23:56 +01:00
2026-02-11 09:39:39 +01:00
2026-02-11 09:39:39 +01:00
2025-06-01 23:22:10 +02:00
2026-01-21 14:01:35 +01:00
2026-01-21 14:01:35 +01:00
2026-01-23 16:23:06 +01:00
2025-11-04 21:44:32 +01:00
2025-08-01 04:39:50 -04:00
2025-08-01 04:39:50 -04:00
2026-01-27 11:34:24 -06:00
2026-01-23 17:15:23 +01:00
2025-08-17 10:51:05 +02:00
2025-07-28 09:15:23 +02:00
2025-08-11 17:10:04 +01:00
2025-09-23 19:05:01 +02:00
2024-12-28 05:39:32 -08:00
2024-12-03 23:35:45 +01:00
2025-11-15 16:08:53 +01:00
2025-11-30 08:45:29 -05:00
2025-10-23 18:52:36 +02:00
2025-12-17 12:00:33 +01:00
2025-10-23 18:52:36 +02:00
2026-01-23 17:15:23 +01:00
2025-08-21 14:42:41 +02:00
2025-11-28 18:32:48 +01:00
2025-11-28 18:32:48 +01:00
2024-11-20 21:13:23 +01:00
2025-11-28 18:32:48 +01:00
2026-01-19 04:01:37 +01:00
2026-01-19 04:01:37 +01:00
2026-01-19 04:01:37 +01:00
2024-12-15 23:27:42 +01:00
2024-11-20 21:13:23 +01:00
2026-02-17 10:51:48 +01:00
2025-11-12 15:59:01 +01:00
2026-02-02 14:11:43 +00:00
2025-11-28 18:32:48 +01:00
2025-11-28 18:32:48 +01:00
2025-12-17 12:00:33 +01:00
2025-08-19 00:30:22 +02:00
2025-06-01 23:22:10 +02:00
2025-11-28 18:32:48 +01:00
2024-11-20 21:13:23 +01:00
2025-11-28 18:32:48 +01:00
2026-02-17 10:51:48 +01:00
2026-02-17 10:51:48 +01:00
2025-06-09 11:25:14 -04:00
2025-11-28 18:32:48 +01:00
2025-11-28 18:32:48 +01:00
2026-01-06 17:28:43 +01:00
2026-02-02 10:41:30 -07:00
2026-01-22 19:44:36 +01:00
2026-01-22 19:44:36 +01:00