conc-map-bench uses the bustle benchmarking harness. This is a port of the well regarded libcuckoo benchmark.
Implementations benchmarked
- RwLock Std HashMap
- CHashMap
- Contrie
- Flurry
- DashMap
- Evmap
- Crossbeam Skiplist
- LeapMap
> cargo tree | rg 'dashmap|chashmap|contrie|flurry|evmap|crossbeam-skiplist'
├── chashmap v2.2.2
├── contrie v0.1.4
├── crossbeam-skiplist v0.0.0 (https://github.com/crossbeam-rs/crossbeam#e1d64600)
├── dashmap v5.0.0
├── evmap v10.0.2
├── flurry v0.3.1
A read heavy model with few inserts, removals and updates. Models caching of data in places such as webservers and disk page caches.
read 98%
insert 1%
remove 1%
Insert and remove heavy model that replicates a scenario where the map is used to exchange data.
read 10%
insert 40%
remove 40%
update 10%
An insert heavy model that replicates load in a scenario where the map is used to gather large amounts of data under a short burst.
read 5%
insert 80%
remove 5%
update 10%
mv results results.bk
./scripts/bench.bash
./scripts/plot.bash
OS: Ubuntu 20.4 CPU: AMD Threadripper 3950x
The CPU has 16 cores and 32 threads.
See the results/
directory.
NOTE: the flurry
case fails because of the OOM killer.
NOTE: the flurry
case fails because of the OOM killer.