Skip to content

benchmarks ​

The benchmarks are in tidepool-bench. They use release builds and are not part of just ci.

commandmeasures
just benchingest throughput, for each format
just bench-queryquery latency on the reference dataset
just bench-livefreshness: 50 WebSocket sessions while tidepool ingests 100,000 rows/s
just bench-restartthe restart time of the reference dataset

The reference dataset is the retail star schema with up to 100 million orders rows.

numbers ​

All on an Apple M1 Max (10 cores), from the milestone notes in docs/plan.md.

Ingest (just bench, 8 clients, batches of 10,000 rows, timed until the last row is visible):

formatrows per second
NDJSONabout 2.2 million
Arrow IPCabout 2.4 million

A stored orders row takes about 28 bytes.

Queries (just bench-query, 100 million orders, region × category, three metrics, 200 selections that are each a new combination):

p50p95
a new selectionabout 68 msabout 113 ms
a selection toggled backless than 1 ms

The first query after a start takes 170 to 290 ms. It builds the join columns and the relationship maps.

Live (just bench-live, 200 ms epochs):

result
an epoch of 100,000 new orders, at 100 million orders0.6 to 0.9 ms
from the ingest acknowledgement to the frame, 50 sessions, 100,000 rows/sp50 128 to 180 ms, p95 220 to 228 ms

Restart (just bench-restart, 100 million orders): 1.2 s.

arguments ​

bash
just bench --rows 1000000 --batch 10000 --clients 8
just bench-query --orders 100000000 --runs 200 --metrics revenue,order_count
just bench-live --orders 10000000 --sessions 50 --rate 100000 --seconds 30

Other work on the machine moves the latency by 15 to 20 ms. When you report a number, also report the load average of the machine.

reference generated from the schemas, the endpoint table and the MCP tools: just docs