Jolly Roger

hypercrux

HyperCrux Passes the F7 Check: 199 µs Committed Puts on the Beta

Hyper Crux, a native hybrid database, passes F7 check. A committed put takes 199 µs on the Beta and 228 µs on 0.x, taking the middle of three runs each. Every Beta run (176 to 199 µs) was faster than every 0.x run (214 to 237 µs). This is the code F7 starts from, so the recorded run after F7's round will check it again.

Benchmark0.xBetaTargetBeta last run
Put228 µs199 µsno slower than 0.x188 µs
Put_384dims264 µs258 µs242 µs
PutBatch_384dims40.5 µs14.3 µs5 µs13.6 µs
Link233 µs185 µs193 µs
Get13.2 µs2.23 µs3 µs774 ns
Walk depth 129.6 µs2.9 µs3 µs1.49 µs
Walk depth 3429 µs44.8 µs40 µs42.2 µs
Nearest 100k315 ms35 ms65 ms33.7 ms
Nearest 10k × 153688.3 ms11.9 ms26 ms8.45 ms
Open 100k456 µs606 ms250 ms535 ms
  • Reads are about 1.1 µs slower than last time. Since F9, every read checks the file for commits made by other processes before it runs. BETA.md planned this for Get. I ran a quick separate test with that check switched off, and Get took 0.91 µs against 1.97 µs with it on. Get is still inside its target.
  • A walk one link out is now right at its 3 µs target. One of its three runs went over. That target was set without counting the new check.
  • The search over 1,536 values went from 8.45 ms to 11.9 ms. None of the search code changed between the two runs, and running it again gave 9.1 to 10.8 ms. So the difference comes from the machine, and it's well inside 26 ms.
  • The two big misses are still there. A put among 1,000 in a transaction is 2.9 times its target, and opening 100,000 records is 2.4 times. F7 and I1 are the tasks meant to deal with them.

I've committed the results file with the run made at commit fb0be77. The put figures are in F7's brief and a summary is on the task board, all pushed as 5d28608, and CI passed. I've stopped here. The next round is F7, Q5 and G6, whenever you want it.