fallintoplace opened a new pull request, #1169: URL: https://github.com/apache/arrow-go/pull/1169
### Rationale for this change DELTA_BINARY_PACKED decoding called `BitReader.GetBatch` once for every value in a miniblock. The miniblock is already the unit decoded by this code, so this missed the existing batch unpackers. ### What changes are included in this PR? - decode each miniblock into reusable scratch with one `GetBatch` call - keep 33 to 64 bit values on the generic uint64 path instead of the 32 bit SIMD unpackers - read SIMD input directly into pooled scratch so batched calls do not add allocations - add int32 and int64 benchmarks with nonzero packed widths - add coverage for batched values from 33 through 64 bits ### Are these changes tested? Yes. I ran the full Parquet test tree with the parquet-testing fixtures, the internal utility and encoding tests with `noasm`, and a linux/amd64 cross-build. Apple M1 Pro results for 65,536 values with `GOMAXPROCS=1` and 10 samples: | Workload | Time | | --- | ---: | | int32 small deltas | -58.86% | | int32 alternating wide deltas | -66.04% | | int64 timestamp-like deltas | -59.72% | | int64 deltas wider than 32 bits | -33.89% | Allocations stay at 2 allocs/op in all four benchmarks. -- 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: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
