mph
mph is a Go package for that implements a minimal perfect hash table over
strings. It uses the "Hash, displace, and compress" algorithm and the
Murmur3 hash function.
Some quick benchmark results (this is on an i7-8700K):
-
Build
constructs a minimal perfect hash table from a 102k word dictionary in
18ms (construction time is linear in the size of the input).
-
Lookup
s on that dictionary take about 30ns and are 27% faster than a
map[string]uint32
:
BenchmarkTable-12 199293806 29.99 ns/op
BenchmarkTableMap-12 145449822 40.92 ns/op