~/talk

Designing a Fast, Efficient, Cache-friendly Hash Table, Step by Step

Talkat CppCon 2017 · 2017-09-24..09-29· [web-performance]
links:none on file
slides:none on file

A new hash table called SwissTable implements a 2-level, N-way associative probing design with per-slot control bytes (seven-bit H2 tags) packed in 16-byte groups and scanned with SSE intrinsics, removing pointers and reducing indirections. The implementation gets about 2–3x faster than std::unordered_map for typical keys, cuts memory use enough to save roughly 1% of Google’s fleet RAM, and reduces fleet CPU sampling by ≈0.5% in rollout — it is production-deployed and works.

AI-written summary · about

  1. 0:00Introduction and credits
  2. 6:45Starting with unordered map
  3. 12:36Simplifying the hash table
  4. 18:41Introducing node_hash_set
  5. 21:33Benchmarking results
  6. 23:47Eliminating sentinels
  7. 27:00Metadata and hash groups
  8. 31:37SSE optimization
  9. 36:58Ergonomics and pitfalls
  10. 42:10Fleetwide performance gains
  11. 45:31Swiss table naming
  12. 46:15Advanced probing experiments
  13. 47:41Seven-sized group experiment
  14. 49:49Q&A session
~/search
type to search 6,249 conferences, 138,987 speakers and 185,172 talks
~/help
cmdctrl k
search every conference, speaker and series
/
focus the filter search
h
home
c
conferences
s
speakers
e
series
t
light / dark — the status bar button does the same
?
this help
esc
close this, then clear every filter — or just the search, while you are typing in it

Ignored while you are typing. Pages without a filter rail have no search to focus.