You are viewing a plain text version of this content. The canonical link for it is here.
Posted to github@arrow.apache.org by "fallintoplace (via GitHub)" <gi...@apache.org> on 2026/10/02 23:06:40 UTC
[PR] perf(compute): vectorize mixed 16-bit filters [arrow-go]
fallintoplace opened a new pull request, #1349:
URL: https://github.com/apache/arrow-go/pull/1349
## What
- Add AVX2 and ARM64 NEON paths for mixed null-free 16-bit filters.
## Why
- 16-bit primitive filters still use the generic writer while 32-bit and 64-bit filters have SIMD paths.
## Implementation
- Keep nulls, short or unaligned filters, dense masks, and noasm on the existing path.
- Benchmark alternating, random25/50/75, clustered50, all-selected, and none-selected at 1K, 64K, and 1M values.
- On M1 Pro, compared with noasm: 1M alternating improves from 4.23 ms to 225 us; random50 improves from 3.52 ms to 1.09 ms. Mixed cases drop from 33 to 32 allocs/op.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: github-unsubscribe@arrow.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] perf(compute): vectorize mixed 16-bit filters [arrow-go]
Posted by "zeroshade (via GitHub)" <gi...@apache.org>.
zeroshade commented on code in PR #1349:
URL: https://github.com/apache/arrow-go/pull/1349#discussion_r4188898310
##########
arrow/compute/vector_selection_bench_test.go:
##########
@@ -134,6 +144,70 @@ func BenchmarkFilterInt32FallbackControls(b *testing.B) {
}
}
+func BenchmarkFilterInt16FallbackControls(b *testing.B) {
+ controls := []struct {
+ name string
+ size int
+ offset int64
+ }{
+ {name: "unaligned-filter-offset", size: 1 << 16, offset: 3},
+ {name: "short", size: 56},
+ {name: "non-multiple-of-eight", size: 1<<16 + 1},
+ }
+
+ for _, control := range controls {
+ control := control
Review Comment:
Optional nit: `control := control` isn't needed since Go 1.22, and the loop at L169 could be `for b.Loop()`. Both mirror the existing Int32 fallback benchmark (L125/L135), so fine to leave and clean up both together later.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: github-unsubscribe@arrow.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] perf(compute): vectorize mixed 16-bit filters [arrow-go]
Posted by "zeroshade (via GitHub)" <gi...@apache.org>.
zeroshade merged PR #1349:
URL: https://github.com/apache/arrow-go/pull/1349
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: github-unsubscribe@arrow.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org