Repository navigation
Move generic SIMD filtering to vortex-buffer - #10930
robert3005 wants to merge 3 commits into
Conversation
Merging this PR will degrade performance by 8.04%3 warnings
Warning Please fix the performance issues or acknowledge them on CodSpeed. Performance Changes
Tip Investigate this regression by commenting Comparing Footnotes
|
e5fe79a to
16e79fc
Compare
Signed-off-by: Robert Kruszewski <github@robertk.io>
Add vortex_buffer::filter::filter_records, which filters records whose byte width is known only at run time. Power-of-two widths use filter_buffer, and other widths copy each run of the selection. The fixed-width array filter now uses it instead of its own bitmap loop. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Robert Kruszewski <github@robertk.io>
16e79fc to
86be634
Compare
In `filter_records`, LLVM kept the per-word closures of byte compress and the bitmap walk out of line, because the word walk calls them from three places. Sparse masks then made one call for each mask word. Mark the closures `inline(always)`. Signed-off-by: Robert Kruszewski <github@robertk.io>
The filter kernels for fixed-width values (SIMD compress, byte compress, run copy, index gather, and the bitmap walk) do not depend on arrays. This change moves them from
vortex-arrayto a newvortex_buffer::filtermodule, so that crates that use only buffers can filter values withoutvortex-array.