Skip to content

Separate RowFn batch inspection from execution planning - #10673

Draft
connortsui20 wants to merge 1 commit into
developfrom
ct/row-fn-cleanup/batch-inputs
Draft

connortsui20 wants to merge 1 commit into
developfrom
ct/row-fn-cleanup/batch-inputs

Conversation

@connortsui20

@connortsui20 connortsui20 commented Oct 21, 2026 •

Copy link
Copy Markdown
Member

Summary

Extracts batch setup from #9979 into a private borrowed-input boundary. Input lengths, dtypes, constants, and strict validity are inspected together before attaching the dispatch-selected execution plan.

Targets develop and can merge independently. #10675 and #10676 use the borrowed batch entry point introduced here.

Changes

Keeps constant classification, input ownership, and execution metadata inside the framework. General execution still collects owned inputs and uses the existing dispatch and retry paths. Function IDs are deferred during inspection until an error needs them, with the supporting CachedId inlining change kept here.

The Vortex test suite was not run locally. Focused native measurements of the combined migration were run separately during the compiler investigation.

@connortsui20
connortsui20 added this pull request to stack #10677 October 21, 2026 15:10
@codspeed

codspeed Bot commented Oct 21, 2026 •

Copy link
Copy Markdown

Merging this PR will degrade performance by 15.14%

3 warnings, 1 note

⚠️ Walltime results may be unreliable

Some benchmarks used the Walltime instrument outside CodSpeed Macro Runners, which can make the results inconsistent.

Learn more about Macro Runners

See affected benchmarks

⚠️ 19 benchmarks are dominated by system calls

System calls cannot be simulated consistently and are left out of the measure. The reported value understates the real cost. Switch to the Walltime instrument to measure them.

Learn more about system calls

See affected benchmarks

⚠️ Base and head ran on different runner types

Some benchmarks with significant performance changes were compared across different runner types, so the changes might not come from the code. Run base and head on the same runner type, or use CodSpeed Macro Runners for more stable results.

Learn more about Macro Runners

Open the report in CodSpeed to investigate

ℹ️ 40 benchmarks have no flamegraph

The flamegraph wasn't generated: the symbols of the profiling trace could not be resolved, because no information about the language frames was collected.

See affected benchmarks

⚡ 5 improved benchmarks
❌ 5 regressed benchmarks
✅ 2398 untouched benchmarks
⏩ 12 skipped benchmarks1

Warning

Please fix the performance issues or acknowledge them on CodSpeed.

Performance Changes

Mode Benchmark BASE HEAD Efficiency
❌ CPU Simulation bench_compare_sliced_dict_primitive[(2000, 10000)] 13 µs 67.1 µs -80.62%
❌ CPU Simulation density_sweep_dense_runs[0.001] 44.5 µs 61.3 µs -27.3%
❌ Walltime threshold_neon[8] 2.4 µs 3 µs -19.04%
❌ Walltime bitpack_blocked_compress_avx512 4.9 µs 5.7 µs -13.78%
❌ CPU Simulation random_i8[0.01] 103.5 µs 116 µs -10.74%
⚡ CPU Simulation random_i128[0.01] 5.3 µs 4.1 µs +30.03%
⚡ Walltime threshold_neon[64] 4.3 µs 3.7 µs +18%
⚡ CPU Simulation stats_compute_is_constant_cached 112.8 µs 99.5 µs +13.45%
⚡ Walltime filter_neon[8] 1.7 µs 1.6 µs +12.7%
⚡ Walltime bitpack_blocked_compress_avx2 7.6 µs 6.8 µs +12.48%

Tip

Investigate this regression by commenting @codspeedbot fix this regression on this PR, or directly use the CodSpeed MCP with your agent.


Comparing ct/row-fn-cleanup/batch-inputs (d3afc24) with develop (dbaf5f8)

Open in CodSpeed

Footnotes

  1. 12 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. ↩

@connortsui20
connortsui20 force-pushed the ct/row-fn-cleanup/batch-inputs branch from 5541df9 to abc8689 Compare October 22, 2026 14:09
@connortsui20
connortsui20 force-pushed the ct/row-fn-cleanup/borrowed-decode branch from 80cbea7 to 9663585 Compare October 22, 2026 14:09
@connortsui20
connortsui20 removed this pull request from stack #10677 October 22, 2026 14:10
@connortsui20
connortsui20 changed the base branch from ct/row-fn-cleanup/borrowed-decode to develop October 22, 2026 14:10
@connortsui20
connortsui20 added this pull request to stack #10695 October 22, 2026 14:11
Inspect borrowed inputs once for lengths, dtypes, constant classification, and strict validity. Pair collected inputs with a separate execution plan while retaining the existing dispatch and retry paths.

Extracted from #9979.

Signed-off-by: Robert Kruszewski <github@robertk.io>
Signed-off-by: Connor Tsui <connor.tsui20@gmail.com>
@connortsui20
connortsui20 force-pushed the ct/row-fn-cleanup/batch-inputs branch from abc8689 to d3afc24 Compare October 22, 2026 14:49
@connortsui20 connortsui20 added the changelog/performance A performance improvement label Oct 22, 2026
@connortsui20
connortsui20 removed this pull request from stack #10695 October 22, 2026 15:12

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

changelog/performance A performance improvement

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants