Repository navigation
Move expression analysis and rewrite tooling into vortex-expr - #10474
robert3005 wants to merge 1 commit into
Conversation
Merging this PR will regress 2 benchmarks
|
| Mode | Benchmark | BASE |
HEAD |
Efficiency | |
|---|---|---|---|---|---|
| ❌ | WallTime | threshold_neon[8] |
2.8 µs | 4.1 µs | -30.33% |
| ❌ | WallTime | take_u16_nullable_from_65536_avx512[1048576] |
380.5 µs | 450.5 µs | -15.55% |
| ⚡ | WallTime | filter_neon[8] |
2.2 µs | 1.1 µs | ×2.1 |
| ⚡ |
Simulation | density_sweep_dense_runs[0.001] |
46.8 µs | 29.5 µs | +58.79% |
| ⚡ |
Simulation | filter_powerlaw_by_mostly_true[250000] |
144.6 µs | 103.4 µs | +39.83% |
| ⚡ | WallTime | threshold_avx2[8] |
2.3 µs | 2 µs | +18.23% |
| ⚡ | Simulation | random_i8[0.01] |
123.4 µs | 108 µs | +14.26% |
| ⚡ | WallTime | filter_neon[80] |
3.6 µs | 3.2 µs | +11.83% |
Tip
Investigate this regression by commenting @codspeedbot fix this regression on this PR, or directly use the CodSpeed MCP with your agent.
Comparing rk/split-array-05-expr (276f15b) with rk/split-array-04-aggregates (33fb97e)
Footnotes
-
37 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports. ↩
ebce817 to
f6708e9
Compare
6f0ee7e to
2bde4df
Compare
`vortex_array::expr::{analysis, forms}` and the `partition_bound*` and
`replace` transforms are only used by scan planning in vortex-layout (and one
`replace` call in vortex-datafusion); nothing in vortex-array calls them. They
move to a new `vortex-expr` crate:
- `vortex_expr::analysis` (annotations, labeling, field-access analysis,
`referenced_field_paths`), also re-exported at the crate root as before
- `vortex_expr::forms::conjuncts`
- `vortex_expr::transform::{partition_bound, partition_bound_annotations,
BoundPartitionedExpr, replace}`
`find_between` stays in vortex-array because `BoundExpression::optimize`
uses it. The now internal `vortex_array::expr::transform` module becomes
private, and the one optimizer test that used `replace` builds the replaced
expression directly.
The umbrella crate's `vortex::expr` module re-exports both
`vortex_array::expr` and `vortex_expr`, so `vortex::expr::transform::replace`
and friends keep their paths.
Signed-off-by: Claude <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ps4mp7KF5c4p66aoSoXx5j
f6708e9 to
33fb97e
Compare
2bde4df to
276f15b
Compare
|
The CodSpeed Performance Analysis check is red. Its headline number swings with no relevant code change: earlier runs on this PR reported +12.99% and −9.77%, and this head shows "2 benchmarks regressed". The two regressions it flags ( The earlier Generated by Claude Code |
Summary
PR 5 of the stack that splits vortex-array into smaller crates.
Nothing in vortex-array calls
vortex_array::expr::{analysis, forms}, thepartition_bound*transforms or thereplacetransform. Their only users are scan planning in vortex-layout and onereplacecall in vortex-datafusion.Changes
vortex-exprcrate:vortex_expr::analysis: annotations, labeling, field-access analysis andreferenced_field_paths. Its items are also re-exported at the crate root, as they were before.vortex_expr::forms::conjuncts.vortex_expr::transform:partition_bound,partition_bound_annotations,BoundPartitionedExprandreplace.find_betweenstays in vortex-array becauseBoundExpression::optimizeuses it. The now-internalvortex_array::expr::transformmodule becomes private.replace. It now builds the replaced expression directly.vortex::exprre-exports bothvortex_array::exprandvortex_expr, sovortex::expr::transform::replaceand friends keep their paths.API Changes
vortex_array::expr::{analysis, forms, transform::*}and the analysis items re-exported at the root ofvortex_array::exprmove tovortex_expr. Paths throughvortex::expr::…are unchanged.🤖 Generated with Claude Code
https://claude.ai/code/session_01Ps4mp7KF5c4p66aoSoXx5j
Generated by Claude Code