CppCon 2017: Matt Kulukundis “Designing a Fast, Efficient, Cache-friendly Hash Table, Step by Step”
CppConYouTube ↗
Further reading 2
What does a module promise its callers? →Try replacing a module whose callers rely on its incidental return order. Start with what the interface says, then trace the decisions it hides and the behaviors people have learned to expect.This video helps answer · When does an implementation detail become a promise?When one component fails, who can keep working? →One process fails. Must unrelated requests wait? Separate failure propagation from throughput limits, then trace what the operating system and service manager can actually isolate.This video helps answer · What does a repeated microbenchmark leave out?
Caption notes
Swiss Tables replace pointer chains with open addressing, compact control bytes and SIMD scans. The performance tradeoffs depend on keys, loads and cache behavior.
Original passages · 6
this "what do
we gain", "what do we lose"?You get 16 probe length
in three instructions. It's amazing.But without running the data once, how do you know what
dimensions are inconsequential?they will rely upon
it, given enough users.We eliminate a memory interaction, on "find" and "insert".You get 16 probe length in three instructions