fallintoplace opened a new pull request, #1246: URL: https://github.com/apache/arrow-go/pull/1246
## What does this PR do? - **Writes repeated RLE boolean runs directly** into the output bitmap - **Copies literal bit-packed runs directly** without a `[]uint64` staging buffer - Keeps partial reads and truncated-page errors aligned with the existing decoder ## Why? `RleBooleanDecoder.DecodeToBitmap` currently decodes through a `[1024]uint64` buffer and writes each value one at a time. This change uses bulk bitmap fills for repeated runs and packed bitmap copies for literal runs. ## Benchmarks Apple M1 Pro, `GOMAXPROCS=1`, `-benchmem`, 1M values: | pattern | before | after | change | | --- | ---: | ---: | ---: | | all true | 2.65 ms | 2.45 us | -99.9% | | alternating | 3.45 ms | 0.20 ms | -94.2% | | short runs | 3.50 ms | 0.20 ms | -94.3% | The benchmark also covers 64K values, unaligned output offsets, and nullable spaced decoding. ## Tests - `go test ./parquet/internal/encoding ./parquet/internal/utils ./parquet/pqarrow` - `go test -race ./parquet/internal/encoding ./parquet/internal/utils ./parquet/pqarrow` - `go test -tags noasm ./parquet/internal/encoding ./parquet/internal/utils` -- 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]
