Skip to content

Benchmark for 'Multi-thread read' operation

Chart

Multi-thread read benchmark chart

Percentile Chart

This chart shows the latency percentile curve for the benchmarked engines. The X axis runs from p50 to p99.99, and the Y axis uses a logarithmic latency scale so tail-latency differences are easier to compare.

Multi-thread read latency percentile chart

Test Conditions - Multi-thread Read Benchmarks

  • Multi-thread read runs reuse the same controlled JVM flags, hardware, and storage directory preparation as the other benchmark suites. Each trial starts from a clean directory provided through the dir system property, then preloads the dataset before measurement begins.
  • Setup inserts 10 000 000 deterministic key/value pairs before the benchmark starts. Keys are generated by HashDataProvider from numeric indexes, while values remain the constant text "opice skace po stromech".
  • Each benchmark thread performs the same read operation in two JMH modes during the same run: SampleTime to capture latency distribution and Throughput to capture aggregate operations per second.
  • The configured thread count for this result set is 4 benchmark threads, matching the threads4 suffix used by the generated result files.
  • Read traffic mixes hits and misses using the same policy as the single-thread read suite: 80% existing keys and 20% guaranteed misses, controlled by benchmarkMissProbability=0.2.
  • Warm-up uses 10 iterations of 20 seconds, followed by 25 measurement iterations of 20 seconds, so the numbers reflect sustained concurrent lookup behavior rather than a short burst.
  • After measurements finish, resources are closed and the populated directories remain on disk so report generation can capture occupied space and CPU usage.
  • Tests executed on Mac mini 2024, 16 GB, macOS 15.6.1 (24G90).

Data for Throughtput Chart

Engine Threads Throughput [ops/s] CPU Usage
ChronicleMap 4 3 729 873 11%
H2 4 2 926 536 12%
HestiaStoreBasic 4 19 258 43%
HestiaStoreCompress 4 26 836 20%
LevelDB 4 212 182 12%
MapDB 4 254 472 13%
RocksDB 4 575 629 12%

Source Data for Percentile Chart

Engine p50 [us/op] p75 [us/op] p90 [us/op] p95 [us/op] p99 [us/op] p99.5 [us/op] p99.9 [us/op] p99.99 [us/op]
ChronicleMap 0.75 0.875 1.166 1.666 10.656 13.904 26.528 79.872
H2 1.332 1.54 1.708 1.832 2.208 2.58 5.584 20.768
HestiaStoreBasic 12.16 307.712 346.624 423.936 802.816 1 128.448 3 137.536 26 705.92
HestiaStoreCompress 235.264 262.656 283.136 299.008 475.648 506.88 860.16 24 051.712
LevelDB 12.08 25.824 38.336 54.592 77.952 90.624 114.56 400.896
MapDB 15.2 16.896 17.824 18.4 21.952 32.288 60.224 326.144
RocksDB 6.912 7.536 8.736 9.072 9.904 10.784 17.856 38.272