Skip to content

Benchmark for 'Sequential read' operation

Chart

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

Sequential read latency percentile chart

Test Conditions - Sequential Read Benchmarks

  • Each sequential scenario uses the same JVM flags, hardware, and scratch directory handling as the write/read suites. The dir property is cleaned before every run to guarantee a fresh start.
  • Setup writes 10 000 000 deterministic key/value pairs (seed 324432L) into the engine. Keys are generated via HashDataProvider so that the exact ordering is reproducible across runs.
  • After preloading, the benchmark resets its sequential cursor. Warm-up iterations walk the keyspace from the first key to the last key so caches and OS I/O buffers reflect streaming access.
  • Each run exposes the same single-threaded sequential scan in two JMH modes: SampleTime to capture per-operation latency distribution and Throughput to capture sustained ordered-read performance.
  • The read workload remains single-threaded; each invocation issues exactly one lookup to keep measurements comparable with the other suites.
  • Directories remain on disk after the run so disk usage and auxiliary metrics can be collected by reporting scripts.
  • Tests for HestiaStoreStream use dedicated stream API. Without using Stream API is performance visible in line HestiaStoreBasic.
  • 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 450 005 0.427 0.417 0.541 0.625 2.03 GB 8%
H2 932 959 1.08 1.042 1.458 1.666 8 KB 9%
HestiaStoreBasic 4 825 210.059 233.984 337.408 546.816 528.55 MB 14%
HestiaStoreCompress 5 223 195.252 227.328 296.448 416.768 335.55 MB 14%
HestiaStoreStream 9 482 357 0.211 0.042 0.166 0.25 335.55 MB 9%
LevelDB 115 114 4.218 4.12 5.08 6.704 363.48 MB 8%
MapDB 192 769 5.157 5 5.952 6.328 1.3 GB 6%
RocksDB 163 819 6.118 6.208 7.12 8.08 324.24 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.417 0.458 0.5 0.541 0.625 0.666 0.875 5.496
H2 1.042 1.208 1.334 1.458 1.666 1.916 3.124 9.36
HestiaStoreBasic 233.984 241.92 270.336 337.408 546.816 594.944 796.672 25 889.538
HestiaStoreCompress 227.328 231.936 247.04 296.448 416.768 431.104 589.188 25 526.272
HestiaStoreStream 0.042 0.042 0.125 0.166 0.25 0.292 6.288 26.701
LevelDB 4.12 4.416 4.704 5.08 6.704 7.496 9.776 364.032
MapDB 5 5.576 5.832 5.952 6.328 6.872 8.736 21.771
RocksDB 6.208 6.536 6.872 7.12 8.08 8.832 11.2 23.52