Single client, p50 ms

scale scenario (a) per-call open 1.9.0 (a') per-call open, O(1) open (b) in-process + cache © Quack + cache © − (b) ms
s point_lookup 465.9 1.171 0.625 2.889 +2.26
s ref_traversal 510.5 41.0 38.7 42.2 +3.48
s aggregate 568.1 91.9 89.6 94.8 +5.28
s predicate_scan 503.3 — 27.9 35.3 +7.38
s pull 461.2 1.149 0.559 2.753 +2.19
s as_of 18,069.0 — 85.3 89.3 +4.01
s since 520.6 — 5.123 7.962 +2.84
s input_bindings 468.3 — 1.051 3.516 +2.46
m point_lookup 5,003.4 1.757 1.126 3.454 +2.33
m ref_traversal 5,542.9 500.3 493.4 500.1 +6.68
m aggregate 6,133.1 1,088.8 1,066.9 1,100.5 +33.54
m predicate_scan — — 333.3 380.8 +47.52
m pull — 1.187 1.798 5.001 +3.20
m as_of ceiling — 1,096.0 1,102.8 +6.81
m since — — 48.3 52.4 +4.15
m input_bindings — — 2.660 5.197 +2.54

concurrency_sweep (client processes; mix of point_lookup, ref_traversal, pull)

scale clients (a) ops/s (b) ops/s © ops/s (b) p50 / p99 ms © p50 / p99 ms
s 1 2.060 74.8 62.4 0.694 / 39.4 3.838 / 42.4
s 8 15.2 578.8 458.8 0.717 / 40.7 3.124 / 64.6
s 32 24.9 1,282.1 1,029.8 1.305 / 79.3 3.675 / 82.2
s 64 26.7 1,260.8 1,009.5 2.914 / 197.8 6.407 / 1,108.4
s 128 27.5 1,205.7 1,014.3 9.997 / 385.6 9.435 / 1,546.8
m 1 — 5.980 5.830 1.219 / 497.4 4.290 / 507.0
m 8 — 46.5 44.8 1.588 / 509.5 4.733 / 547.8
m 32 — 109.9 104.8 2.859 / 846.8 9.364 / 903.3
m 64 — 104.0 104.8 9.844 / 2,500.8 26.5 / 2,083.9
m 128 — 101.6 97.2 33.7 / 4,156.5 49.1 / 3,684.4

write_mixed (8 readers + 1 writer, 60 s) and sustained (32 readers + 1 writer, 300 s, m)

scenario scale op (a) ops/s (b) ops/s © ops/s (b) p50 / p99 ms © p50 / p99 ms
write_mixed s read x8 14.9 329.2 268.4 41.1 / 68.6 44.7 / 83.0
write_mixed s write x1 1.930 246.7 139.8 4.011 / 5.019 6.780 / 17.3
write_mixed m read x8 — 17.2 17.7 560.2 / 2,203.6 555.2 / 2,042.3
write_mixed m write x1 — 191.2 120.1 4.494 / 10.4 7.806 / 15.9
sustained m read x32 — 37.0 53.7 997.5 / 4,263.6 920.5 / 1,693.8
sustained m write x1 — 133.8 53.3 4.787 / 29.5 15.9 / 57.0