Add physical parameters to OutputSink - #9585
Conversation
Merging this PR will improve performance by 13.04%
|
| Mode | Benchmark | BASE |
HEAD |
Efficiency | |
|---|---|---|---|---|---|
| ⚡ | WallTime | words_gather_scalar_avx2[65536] |
9.3 µs | 8.3 µs | +13.04% |
Tip
Curious why this is faster? Comment @codspeedbot explain why this is faster on this PR, or directly use the CodSpeed MCP with your agent.
Comparing ct/sink-params (f50516b) with claude/generic-output-sink-etzm2l (f3ca34d)
Footnotes
-
54 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. ↩
Signed-off-by: Connor Tsui <connor.tsui20@gmail.com>
500a2e9 to
f50516b
Compare
| // Dense execution leaves output uninitialized. Nullable branches fill placeholders only when | ||
| // they need to skip invalid rows. | ||
| visitor.visit_into::<(T, T), UninitElementSink<T>, _>(|(lhs, rhs), output| { | ||
| visitor.visit_into::<(T, T), UninitElementSink<T>, _>((), |(lhs, rhs), output| { |
There was a problem hiding this comment.
would be nice to not have new ()?
There was a problem hiding this comment.
yeah it would be nice, but don't really want to add more API surface just for this (and it depends on the output sink you choose at the end so not all of them are like this)
Summary
RowFnAPI #9129This adds a physical-parameters channel to
OutputSinkand stacks on #9581, completing runtime logical and physical output selection separately.Changes
OutputSink::Paramsnow flows through sink visits, validation, and allocation. For example,FixedSizeListSink(new) uses an options-derived runtime width with safe complete-row initialization.API Changes
The unstable row-function API now requires sink parameters for
visit_intoandvisit_prepared_into; sinks that need none just use ().