Module table
Available on crate feature
dep_rkyv
only.Expand description
An archived hash table implementation based on Google’s high-performance SwissTable hash map.
Notable differences from other implementations:
- The number of control bytes is rounded up to a maximum group width (16) instead of the next power of two. This reduces the number of empty buckets on the wire. Since this collection is immutable after writing, we’ll never benefit from having more buckets than we need.
- Because the bucket count is not a power of two, the triangular probing sequence simply skips any indices larger than the actual size of the buckets array.
- Instead of the final control bytes always being marked EMPTY, the last control bytes repeat the first few. This helps reduce the number of lookups when probing at the end of the control bytes.
- Because the available SIMD group width may be less than the maximum group width, each probe reads N groups before striding where N is the maximum group width divided by the SIMD group width.
Structs§
- A low-level archived SwissTable hash table with explicit hashing.
- The resolver for
ArchivedHashTable
. - An iterator over the entry pointers of an
ArchivedHashTable
.