vortex-data
vortex
Blog
Docs
Changelog
Blog
Docs
Changelog
Overview
Branches
Benchmarks
Runs
Performance History
Latest Results
perf(array): hoist decimal same-scale cast plan (#8932) ## Summary - Evaluate the `SameScale` cast plan once for each array. - Use a direct closure for each value in a same-scale cast. - Use `cast_decimal_buffer` for dense, null, and masked output buffers. - Keep the existing operation for all other cast plans. ## Problem The previous code called `DecimalCastPlan::cast` for each value. That function matched the cast plan for each value. The benchmark profile uses 16 code-generation units and no LTO. An unrelated source addition changed the LLVM output for this function. The nullable copy benchmark increased from approximately 65 µs to 99 µs. Samply showed the same hot call path in both binaries: ```text try_map_masked_into -> DecimalCastPlan::cast ``` The slow binary used a larger function and more stack loads and stores. The new code moves the common plan match outside the value loop. This makes the loop independent of that match. ## Benchmarks Command: ```console cargo bench -p vortex-array --bench cast_decimal -- --sample-count 100 --min-time 3 --max-time 6 --color never ``` | benchmark | develop median | this PR median | change | |---|---:|---:|---:| | `copy_non_nullable[65536]` | 70.10 µs | 41.18 µs | -41.3% | | `copy_nullable[65536]` | 65.11 µs | 56.44 µs | -13.3% | | `in_place_non_nullable[65536]` | 590.5 ns | 610.7 ns | +20.2 ns | | `in_place_nullable[65536]` | 680.5 ns | 690.7 ns | +10.2 ns | The in-place cases do not use the changed buffer path. Their differences are 10 ns and 20 ns. ## Verification - `cargo nextest run -p vortex-array -E 'test(/arrays::decimal::compute::cast::tests/)'` — 23 passed - `cargo clippy --all-targets --all-features` - `cargo +nightly fmt --all --check` ## AI assistance This PR was prepared with OpenAI Codex. The human author reviewed the code, benchmark results, profile data, and test results. Signed-off-by: 蔡略 <cailue@apache.org>
develop
5 hours ago
Merge branch 'develop' into perf/hoist-decimal-same-scale-cast
ClSlaid:perf/hoist-decimal-same-scale-cast
6 hours ago
Add `UnionArray` compute functions (#8884) ## Rationale for this change Tracking issue: https://github.com/vortex-data/vortex/issues/7882 This PR adds the straightforward compute support for canonical sparse Union arrays while keeping operations with unresolved nullability or placeholder semantics in focused follow-ups. ## What changes are included in this PR? - Adds canonical filter execution and slice and mask reductions for UnionArray, following the same structural execution patterns as neighboring canonical dtypes. - Adds validity-mask execution while preserving row alignment across type IDs and sparse children. - Recursively compresses the type IDs and every sparse child. - Computes uncompressed size as the checked sum of the type IDs and sparse children. - Adds focused coverage for structural operations, outer null masking, and size accounting. ## Deferred follow-ups - Take, including nullable-index outer-null propagation, and dictionary execution that depends on it. - Union casts and outer-nullability conformance coverage. - Constant Union canonicalization and inactive-child placeholder construction. - Chunked Union canonicalization, including a representation for empty chunked unions. The source TODOs record the required semantics at each deferred dispatch point. Signed-off-by: Connor Tsui <connor.tsui20@gmail.com>
develop
6 hours ago
Unify numeric compute kernels with vortex-compute iteration functions Signed-off-by: Robert Kruszewski <github@robertk.io>
rk/unifydecimal
6 hours ago
Update C++ API for session-taking vx_array_from_arrow Array::from_arrow takes a Session; C header regenerated. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Signed-off-by: Robert Kruszewski <github@robertk.io>
rk/deprecate-arrow-arrays
6 hours ago
Update C++ API for session-taking dtype ⇄ Arrow schema conversions DataType::from_arrow and DataType::to_arrow take a Session, matching the new vx_dtype_from_arrow_schema / vx_dtype_to_arrow_schema signatures. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Signed-off-by: Robert Kruszewski <github@robertk.io>
rk/deprecate
6 hours ago
Exclude Markdown from ruff format (#8940) ## Rationale for this change The `Python (lint)` CI job is failing on `develop`: CI installs ruff unpinned via `uvx`, and ruff 0.16 started formatting Python code blocks inside Markdown files by default. Three docs (`docs/user-guide/spark.md`, `java/vortex-spark/README.md`, `vortex-python-cuda/README.md`) use deliberate comment alignment in their examples and now fail `ruff format --check`. ## What changes are included in this PR? Adds `exclude = ["*.md"]` under `[tool.ruff.format]`, restoring the pre-0.16 behavior (Python sources only — 137 files — are formatted; `ruff check` is unaffected). Verified locally with ruff 0.16.0: `uvx ruff format --check .` and `uvx ruff check .` both pass. ## What APIs are changed? Are there any user-facing changes? None — lint configuration only. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Signed-off-by: Robert Kruszewski <github@robertk.io> Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
develop
7 hours ago
Exclude Markdown from ruff format ruff 0.16 (installed unpinned via uvx in CI) started formatting Python code blocks inside Markdown files by default, breaking the Python lint job on three docs that use deliberate comment alignment. Keep Markdown out of the formatter to restore the pre-0.16 behavior; ruff check is unaffected. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Signed-off-by: Robert Kruszewski <github@robertk.io>
rk/ruff-md-format-exclude
7 hours ago
Latest Branches
CodSpeed Performance Gauge
+59%
perf(array): hoist decimal same-scale cast plan
#8932
6 hours ago
0701551
ClSlaid:perf/hoist-decimal-same-scale-cast
CodSpeed Performance Gauge
+12%
Unify numeric compute kernels with vortex-compute iteration functions
#8939
8 hours ago
950cf30
rk/unifydecimal
CodSpeed Performance Gauge
0%
Deprecate FromArrowArray in favour of ArrowSession array imports
#8927
8 hours ago
3c9fce8
rk/deprecate-arrow-arrays
© 2026 CodSpeed Technology
Home
Terms
Privacy
Docs