Repository navigation
Return owned results from the optimizer and log every parent rewrite - #10407
Conversation
try_optimize and try_optimize_recursive borrowed the array and returned Option<ArrayRef>, so callers cloned the input again on a miss. They now take the array by value and return it with a flag that says whether any rewrite fired. The executor logged execute_parent rewrites in two places with the same format and did not log reduce_parent rewrites. A log_parent_rewrite helper now logs both, with the phase name in the message. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Robert Kruszewski <github@robertk.io>
Merging this PR will degrade performance by 7.34%
|
| Mode | Benchmark | BASE |
HEAD |
Efficiency | |
|---|---|---|---|---|---|
| ❌ | Simulation | density_sweep_dense_runs[0.001] |
30.2 µs | 47.5 µs | -36.4% |
| ❌ | Simulation | filter_powerlaw_by_mostly_true[250000] |
104 µs | 149.5 µs | -30.43% |
| ❌ | Simulation | take[routing/same_chunk/primitive/nonnull/chunks=32/indices=1000] |
176 µs | 225.6 µs | -21.97% |
| ❌ | WallTime | starts_with_avx2[8, VarBin] |
41.2 µs | 46.9 µs | -12.07% |
| ⚡ | WallTime | mul_u64_nonnull_neon |
40.2 µs | 28.7 µs | +40% |
| ⚡ | WallTime | multiply_shapes_neon[(32768, PerRowPerRow)] |
38.3 µs | 32.6 µs | +17.47% |
| ⚡ | WallTime | mul_i64_nonnull_neon |
38.4 µs | 32.7 µs | +17.47% |
| Simulation | bench_compare_primitive[(10000, 2)] |
64.2 µs | < 1 ns | N/A |
Tip
Investigate this regression by commenting @codspeedbot fix this regression on this PR, or directly use the CodSpeed MCP with your agent.
Comparing rk/optimize-owned (cbdec56) with develop (88a4de8)
Footnotes
-
534 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. ↩
try_optimize and try_optimize_recursive borrowed the array and returned
Option, so callers cloned the input again on a miss. They now
take the array by value and return it with a flag that says whether any
rewrite fired.
The executor logged execute_parent rewrites in two places with the same
format and did not log reduce_parent rewrites. A log_parent_rewrite
helper now logs both, with the phase name in the message.