Topic 2 — notes
Predictions (fill BEFORE running benches)
| Bench | hashbrown | BTreeMap | crossbeam SkipMap | my skiplist | my inc. map |
|---|---|---|---|---|---|
| point lookup, 1e7, Zipf (ns/op) | |||||
| insert 1e6 (M ops/s) | |||||
| ordered scan 1e6 (M elems/s) | |||||
| rehash_spike max: hashbrown vs incremental | — | — | — |
Reading answers
redis dict (reading-redis-dict.md)
- Insert into ht[0] during rehash — why a bug:
- pauserehash exists for:
- empty_visits=10n tail guarantee:
redis skiplist (reading-redis-skiplist.md)
- Why skiplist + dict both:
- Expected search cost at p=0.25, priced vs measured:
hashbrown (reading-hashbrown.md)
- 7/8 vs 1.0 load factor:
- Hash policy paragraph (for M2 decision):
- DELETED churn ↔ LSM tombstones:
RocksDB memtable (reading-rocksdb-memtable.md)
- spans/backward under concurrent CAS:
- acquire/release vs SeqCst at line 383:
- Miss estimate vs hashbrown number:
rax / ART / SwissTable talk
- (questions in each guide)
Experiment findings
- rehash_spike table + per-decile max:
- Where my skiplist loses to hashbrown and by how much (RUM terms):
- Implementation trade I chose for skiplist node layout, and why:
M2 log
- attribute-store design written BEFORE peeking at reference
- comparison vs reference attribute_store.rs / string_pool.rs:
- hash policy decision + bench evidence: