Latest Results
feat(vortex-bench): infra of SpatialBench on DuckDB, plain binary (#8598)
<!--
Thank you for submitting a pull request! We appreciate your time and
effort.
Please make sure to provide enough information so that we can review
your pull
request. The Summary and Testing sections below contain guidance on what
to
include.
-->
## Summary
<!--
If this PR is related to a tracked effort, please link to the relevant
issue
here (e.g., `Closes: #123`). Otherwise, feel free to ignore / delete
this.
In this section, please:
1. Explain the rationale for this change.
2. Summarize the changes included in this PR.
A general rule of thumb is that larger PRs should have larger summaries.
If
there are a lot of changes, please help us review the code by explaining
what
was changed and why.
If there is an issue or discussion attached, there is no need to
duplicate all
the details, but clarity is always preferred over brevity.
-->
Adds a SpatialBench benchmark that runs on DuckDB across two storage
lanes, Vortex binary BLOB and Parquet binary BLOB.
<!--
## API Changes
Uncomment this section if there are any user-facing changes.
Consider whether the change affects users in one of the following ways:
1. Breaks public APIs in some way.
2. Changes the underlying behavior of one of the engine integrations.
3. Should some documentation be updated to reflect this change?
If a public API is changed in a breaking manner, make sure to add the
appropriate label.
-->
## Benchmark results
<!--
Please describe how this change was tested. Here are some common
categories for
testing in Vortex:
1. Verifying existing behavior is maintained.
2. Verifying new behavior and functionality works correctly.
3. Serialization compatibility (backwards and forwards) should be
maintained or
explicitly broken.
-->
Local, warm, median of 5 (ms).
| Q | Query | Parquet | Vortex | Winner |
|---|---|--:|--:|:--|
| Q1 | trips within 50km of Sedona | 170.2 ms | 132.7 ms | Vortex 1.3× |
| Q2 | trips in Coconino County | 379.5 ms | 249.2 ms | Vortex 1.5× |
| Q3 | monthly stats within 15km | 235.5 ms | 203.3 ms | Vortex 1.2× |
| Q4 | top-1000-tip zone distribution | 404.8 ms | 114.8 ms | Vortex
3.5× |
| Q5 | repeat-customer convex hulls | 3174.8 ms | 3187.3 ms | tie |
| Q6 | zone stats in bbox | 718.8 ms | 306.1 ms | Vortex 2.3× |
| Q7 | route-detour ratios | 938.6 ms | 1046.1 ms | tie (~noise) |
| Q8 | nearby pickups per building (500m) | 1000.6 ms | 1071.2 ms | tie
(~noise) |
| Q9 | building conflation (IoU) | 36.4 ms | 40.6 ms | tie |
| Q10 | zone stats (LEFT JOIN) | timeout | timeout | — |
| Q11 | cross-zone trips | timeout | timeout | — |
| Q12 | 5 nearest buildings (KNN) | timeout | timeout | — |
## Takeaways
Vortex wins the scan/filter-bound queries (Q1–Q4, Q6) by up to 3.5×.
Q5/Q7/Q8/Q9 are compute-bound (DuckDB spatial join dominates), so the
formats converge. Q10–Q12 time out on both, because the unindexed
spatial join is the wall, independent of storage format.
---------
Signed-off-by: Nemo Yu <zyu379@wisc.edu> Fix scan release state downcasts
DCO Remediation Commit for Nicholas Gates <nick@nickgates.com>
I, Nicholas Gates <nick@nickgates.com>, hereby add my Signed-off-by to this commit: e96e21d69ef230eed7d993c46bdbba8b5bfe0c60
I, Nicholas Gates <nick@nickgates.com>, hereby add my Signed-off-by to this commit: 29264207bccdaa90c0ea8ce6388d191d31c65767
I, Nicholas Gates <nick@nickgates.com>, hereby add my Signed-off-by to this commit: 97042b645ffd5836892741acd3fb8c9ac80b32fd
I, Nicholas Gates <nick@nickgates.com>, hereby add my Signed-off-by to this commit: 2f37a1b80c43be0a03886519e5d57a86ccad3563
I, Nicholas Gates <nick@nickgates.com>, hereby add my Signed-off-by to this commit: 6fdd31bcfdd9688fb4fb164486707a77cc139e8f
I, Nicholas Gates <nick@nickgates.com>, hereby add my Signed-off-by to this commit: b4abeca0c6750b250ef1f31736e7833342466692
Signed-off-by: Nicholas Gates <nick@nickgates.com> Latest Branches
-6%
claude/cool-mendel-iclftk +2%
+5%
nemo/spatial-wire-vx-bench © 2026 CodSpeed Technology