In this project, we benchmark the performance of four different implementations of a LRU-type cache:
- Our implementation using the "lock-free locks" based DList and Hashmap from cmuparlay/flock (C++)
- Our fine-grained locking implementation built on Intel TBB Hashmap and Scoped Locks (C++)
- Caffeine Cache (Java)
- Guava Cache (Java)
- Google Benchmark for the locking implementation
- cmuparlay for the lock-free implementation
- Java Microbenchmark Harness (JMH) for Caffeine and Guava
- Zipfian parameter for get/put key distribution (0.01, 0.75, 0.9, 0.99)
- Number of threads used during benchmarking (1, 4, 16, 64, 128 (overclock))
- Cache Size (100, 10000, 100000, 1000000)
- CMake ≥ 3.13
- C++17
- OpenJDK 24.0.1
- Maven 3.9.9
- Google Benchmark
- JMH
- TBB
- cmuparlay/flock
- cmuparlay/parlaylib
- dirtyzipf
- YCSB
- Caffeine
- Guava