vortex-data
vortex
Blog
Docs
Changelog
Blog
Docs
Changelog
Overview
Branches
Benchmarks
Runs
Performance History
Latest Results
Extract BitBuffer::zip_lanes and route the validity-gated reductions through it Consolidate the duplicated word-chunked branch-free validity walks (min_max, nan_count, float sum) behind one shared, zero-cost helper `BitBuffer::zip_lanes(values, |value, is_valid| ...)`. The closure must consume `is_valid` branch-free; the helper is `#[inline(always)]` so it folds into the multiversioned callers. Proven no perf loss (the goal): a same-run A/B with structurally identical code shows the closure form is never slower and actually vectorizes *better* than the raw nested loop (1.33 vs 3.87 ns/elem in the standalone; LLVM autovectorizes the closure form). In the real build min_max held/improved (154 -> 142 us @50% null); the others stayed within the VM's run-to-run noise (the untouched sum_i64 moved ~13% same-direction, establishing that floor). 128 aggregate + 320 cast tests pass; clippy clean. Integer sum keeps its own helper: its checked-overflow early-return bail does not fit the infallible `FnMut(T, bool)` closure. Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
claude/fast-f-to-t-cast-7JrNR
1 hour ago
fix(vortex-duckdb): import new_exporter to satisfy clippy::absolute-paths Signed-off-by: Andrew Duffy <andrew@a10y.dev>
aduffy/geo-v0
10 hours ago
address comments Signed-off-by: Andrew Duffy <andrew@a10y.dev>
aduffy/geo-v0
10 hours ago
Merge branch 'develop' into aduffy/geo-v0 Resolve conflict in vortex-duckdb/src/convert/dtype.rs by keeping both new match arms: DUCKDB_TYPE_GEOMETRY (from this branch) and DUCKDB_TYPE_VARIANT (from develop). Signed-off-by: Andrew Duffy <andrew@a10y.dev>
aduffy/geo-v0
10 hours ago
Vectorize integer sum and min/max over nullable arrays The with-nulls paths for primitive sum and min/max walked the values zipped with a per-element validity bit, which kept them scalar even though their all-valid counterparts already autovectorize to packed widening adds (sum) and packed min/max. Drive both null paths from the validity mask's contiguous `[start, end)` runs (`Mask::slices`, computed once and cached). Each run is fully valid, so it reuses the existing vectorized all-valid reduction: sum folds each run through the chunked widening accumulator; min/max folds the native per-run integer min/max, with floats chaining the runs through the NaN-filtering reduction. Results are unchanged. To support the fold, integer min/max now returns native `(min, max)` (`integer_min_max_raw`) which both the all-valid and run paths reduce before building the result scalar. Benchmarked over 100k i32 elements (added nullable bench cases): - clustered nulls: sum 106us -> 29us, max 159us -> 35us - scattered ~50% nulls: no regression (sum 584us -> 530us, max 606us -> 593us) Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
claude/great-edison-jrGY0
13 hours ago
Fix dtype mismatch in Filter::take logic Signed-off-by: Robert Kruszewski <github@robertk.io>
rk/fuzzerror
1 day ago
Use ArcSwap for aggregate fn registry Signed-off-by: Robert Kruszewski <github@robertk.io>
rk/aggregatearcswap
1 day ago
second claude pass Signed-off-by: Matthew Katz <katz@spiraldb.com>
mk/add-list-layout
1 day ago
Latest Branches
CodSpeed Performance Gauge
+11%
Fuse validity-aware min/max with the value conversion in primitive cast
#8074
8 hours ago
7f4dfd7
claude/fast-f-to-t-cast-7JrNR
CodSpeed Performance Gauge
-5%
add vortex-geo crate and WKB extension type
#7722
10 hours ago
0d0cec8
aduffy/geo-v0
CodSpeed Performance Gauge
+14%
perf: aggregate min/max
#8061
13 hours ago
6a44f51
claude/great-edison-jrGY0
© 2026 CodSpeed Technology
Home
Terms
Privacy
Docs