hw-apex-bench

How much does a small read cost?

Compare density and resident read cost. This is a historical genome example, not a prediction for your files.

lzbench and TurboBench rank compressors by density and bulk throughput; SeqBench covers sequence compression; per-format seekable readers exist for gzip (rapidgzip), zstd (zstdra, seekable-zstd) and BGZF (htslib bgzip). None of them compares the cost of reading one region across formats at matched block sizes. That is what this measures.

Matched-g: interactive ACEAPEX vs BGZF

Measured on thirty frozen 2 MiB T2T-CHM13v2.0 windows, not the chr1 snapshot above; ratios are not comparable between the two tables.

ACEAPEX is written by the author of this benchmark. Its density advantage and its latency penalty are both reported below; the harness, corpora and raw samples are in the repository.

exact gACE ratioBGZF ratioACE p50 msBGZF p50 msACE p99 msBGZF p99 ms
4 KiB4.6827083.7940200.1298840.0533800.2767280.073939
8 KiB5.0105914.1395260.1351440.0539010.2655080.077826
16 KiB5.2198384.4066500.1366460.0630280.2611290.090670
32 KiB5.3443084.6437260.1512540.0588500.2803750.135283
65,280 B5.4126214.8108340.1739860.1001580.3962230.223559

ACEAPEX interactive: LIT_CHUNK=64 KiB, FSE_CHUNK=4 KiB. Both codecs use the same runner, frozen corpus and resident 16 KiB request trace.

Matched-g interactive report · GitHub Actions run 35364484648

Independence cost at 16 KiB (separate chr1 c_file(g) scope): ACEAPEX default @ ee5a37e costs 1.632% versus 6.569% for matched zstd-seekable; BGZF is n/a because no same-encoder whole-input baseline exists. Scope and provenance.

Batch sweep scope (2026-09-19): hg38 chr1, N=5000, 16 KiB ranges, workers=1, Actions run 35427975099.

A native batch API is what makes the dense profile usable at all for region reads: it moves from 659.6 to 12,369.7 ranges/s under uniform access. But dense leads interactive only under uniform access. Once requests concentrate, interactive overtakes it somewhere between 12 and 8 bits of access entropy and keeps the lead: at Hα ≈ 2 bits, interactive reaches 869,088 ranges/s against 467,998 for dense. For batch-heavy workloads with any locality, interactive is the profile to pick.

Concentration helps BGZF more than it helps ACEAPEX in the single-request path. Under uniform access bgzip runs 10,040.6 ranges/s against ACEAPEX interactive at 9,086.4, a 1.1× gap. At Hα ≈ 2 bits bgzip reaches 64,722.7 against 13,847.4, a 4.7× gap. The batch API is where ACEAPEX answers locality; the loop path is not.

Access-entropy sweep.

Try your own data · What is released and what is measured?

Measured compression trade-offsExact values and unsupported points appear in the table below.
Hover or focus a point for values.

The slider selects five measured profiles; it never interpolates. Batch workers: 1; requests: 5,000.

Values behind the plot

Green marks a best observed value only where direction is meaningful and scope matches. Granularity and access break-even are descriptive properties, not rankings. Access entropy appears only in the batch table. Missing values are never plotted as zero.

Absolute values belong to the measured host. Compare matching configurations and runs.
Historical CPU batch results for the selected profile (separate from c(g))
ConfigurationMethodWorkersH_alpha · bitsranges/s
Separate evidence: zstd frame frontier and declared GPU observations

These scopes are not combined with the primary plot. Full decode values without a confirmed plateau remain data edge.

Frame bytesRatiop50 msp99 msAmplificationFull decode MB/s
Device / codecVRAM GBBlock bytesReported / expected blocksFull decode GB/sStatus
Provenance and reproduction

Original JSONL · Raw evidence · Read a provenance record

Reproduction runs measurements and may be expensive. The published data has not been rerun for this presentation.