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]

Reply via email to