Skip to content

Benchmark for 'Single-thread read' operation

Chart

Single-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.

Single-thread read latency percentile chart

Test Conditions - Single-thread Read Benchmarks

  • Read-focused runs reuse the same controlled JVM, hardware, and JVM flag configuration as the write suite. Each trial prepares a clean directory pointed to by the dir system property before preloading the dataset.
  • Setup inserts 10 000 000 deterministic key/value pairs (seed 324432L) so every engine serves identical data. Keys come from HashDataProvider, while values remain the constant string "opice skace po stromech".
  • Warm-up iterations issue random lookups (80 % hits, 20 % misses) to trigger JIT compilation, cache population, and to ensure index structures have settled before measurements start.
  • Each run exposes the same single-threaded read loop in two JMH modes: SampleTime to capture per-operation latency distribution and Throughput to capture sustained lookup performance over 20-second windows.
  • Each benchmark keeps a consistent random sequence per iteration, ensuring engines experience the same access pattern and allowing apples-to-apples comparisons.
  • After measurements finish, readers close their resources but the populated directories remain on disk so sizes can be captured by the reporting scripts.
  • Tests executed on Mac mini 2024, 16 GB RAM, macOS 15.6.1 (24G90).

Data for Throughtput Chart

Engine Score [ops/s] Mean [us/op] p50 [us/op] p95 [us/op] p99 [us/op] Occupied space CPU Usage
ChronicleMap 2 202 147 0.469 0.5 0.583 0.666 2.03 GB 8%
H2 912 427 1.11 1.082 1.5 1.708 8 KB 9%
HestiaStoreBasic 5 827 167.135 243.456 263.68 525.312 559.56 MB 18%
HestiaStoreCompress 6 054 162.565 249.088 272.896 427.52 335.55 MB 19%
LevelDB 253 469 4.232 4.084 6.208 7.576 363.36 MB 8%
MapDB 201 583 4.964 5.08 6.08 6.496 1.3 GB 7%
RocksDB 156 017 6.465 6.416 8.528 9.28 324.23 MB 8%

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.5 0.5 0.542 0.583 0.666 0.708 0.959 6.12
H2 1.082 1.25 1.374 1.5 1.708 2 3.164 9.696
HestiaStoreBasic 243.456 255.488 260.096 263.68 525.312 530.432 544.768 8 683.52
HestiaStoreCompress 249.088 263.68 269.824 272.896 427.52 435.712 446.464 8 552.448
LevelDB 4.084 4.496 5.832 6.208 7.576 8.288 10.864 365.056
MapDB 5.08 5.624 5.912 6.08 6.496 7.04 8.832 21.664
RocksDB 6.416 7.04 8.208 8.528 9.28 9.904 12.528 25.6