cperl
cperl copied to clipboard
try the google swiss table (in C)
Either the simple 16 ptr version (on 64bit), but probably go for the other cache-aware 7 ptr variant described in the talk, with the highest metadata bit to mark a full table. https://youtu.be/ncHmEUmJZf4?t=2845
See https://abseil.io/blog/20180927-swisstables and for the C++ code https://github.com/abseil/abseil-cpp/blob/master/absl/container/internal/raw_hash_set.h. I haven't found a C version for strings yet, but it should be much shorter, without all the C++ quirks. possibly inline short (<8 byte) strings. They don't care for 32bit, but we do. Shouldn't be too hard to support both.