Execute owned RowFn outputs over valid rows - #9468
Conversation
4935fa5 to
85ef3c9
Compare
Merging this PR will degrade performance by 1.51%
|
| Mode | Benchmark | BASE |
HEAD |
Efficiency | |
|---|---|---|---|---|---|
| ❌ | Simulation | compact_sliced[(2048, 10)] |
207.7 µs | 278.3 µs | -25.34% |
| ❌ | Simulation | compact_sliced[(1024, 10)] |
127.9 µs | 163.9 µs | -21.95% |
| ❌ | Simulation | take[small_m/shuffled/primitive/nonnull/chunks=256/indices=64] |
517.4 µs | 598.3 µs | -13.53% |
| ❌ | Simulation | take[small_m/shuffled/primitive/nonnull/chunks=2048/indices=64] |
685.8 µs | 781 µs | -12.19% |
| ❌ | Simulation | cold_misaligned[(16, 64)] |
376.6 µs | 425 µs | -11.39% |
| ❌ | Simulation | take[small_m/shuffled/primitive/nonnull/chunks=256/indices=16] |
227.4 µs | 254.3 µs | -10.58% |
| ⚡ | Simulation | decompress[u64, (4000, 1024)] |
103.6 µs | 84.4 µs | +22.73% |
| ⚡ | WallTime | words_gather_scalar[65536] |
9.4 µs | 8.3 µs | +13.38% |
| ⚡ | Simulation | null_count_run_end[(10000, 1024, 0.01)] |
8 µs | 7.2 µs | +11.01% |
| ⚡ | Simulation | null_count_run_end[(10000, 256, 0.01)] |
8 µs | 7.2 µs | +11.01% |
| ⚡ | Simulation | null_count_run_end[(32000, 1024, 0.01)] |
8 µs | 7.2 µs | +11.01% |
| ⚡ | Simulation | null_count_run_end[(32000, 256, 0.01)] |
8 µs | 7.2 µs | +11.01% |
| ⚡ | Simulation | compress_fsst[(500, 64, 8)] |
580.2 µs | 523.8 µs | +10.77% |
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-owned-valid-rows (d90f471) with ct/row-fn-spatial-predicates (e0e3fe7)
Footnotes
-
517 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. ↩
85ef3c9 to
d90f471
Compare
d90f471 to
aaf9596
Compare
Rationale for this change
RowFnover Vortex arrays #9130Adds direct valid-row execution for owned
RowFnoutputs before the first nullable deferred owned consumer.What changes are included in this PR?
Adds
DefaulttoOutputElementand uses it only to initialize skipped output positions. Batch execution masks those positions before returning the array.Owned infallible and deferred visits now execute directly over null-tolerant decoded inputs. Unsupported input encodings can still use the filter-and-scatter fallback from the spatial-distance layer.
What APIs are changed? Are there any user-facing changes?
Extends the unstable
OutputElementcontract withDefault. There are no stable API changes.