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 28%
HestiaStoreCompress 4 19 993 26%
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 279.04 311.296 337.408 360.448 700.416 728.064 8 863.744 9 502.72
HestiaStoreCompress 284.672 318.464 342.528 356.864 534.528 564.224 8 847.36 9 109.504
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