fallintoplace opened a new pull request, #1260:
URL: https://github.com/apache/arrow-go/pull/1260

   ## What
   
   - Add runtime-dispatched SIMD encoding for 4-byte and 8-byte 
BYTE_STREAM_SPLIT values.
   - Use NEON structure loads and unzip operations on arm64.
   - Use AVX2 unpacking on amd64.
   - Reuse the fast path for numeric encoders and fixed-length byte arrays of 
width 4 or 8.
   - Keep the scalar fallback for `noasm` builds and CPUs without the required 
feature.
   
   ## Benchmark
   
   Direct split benchmark with 65,536 values on an Apple M1 Pro, Go 1.26.3, 1 
CPU, 150 ms, 7 runs. `dispatch` uses the NEON path on this machine.
   
   | Value width | Scalar | SIMD | Speedup |
   | ---: | ---: | ---: | ---: |
   | 4 bytes | 113,877 ns/op | 6,745 ns/op | 16.9x |
   | 8 bytes | 218,824 ns/op | 28,861 ns/op | 7.6x |
   
   ## Tests
   
   - `go test ./parquet/internal/encoding`
   - `go test -tags noasm ./parquet/internal/encoding`
   - `GOOS=darwin GOARCH=amd64 go test -c -o /dev/null 
./parquet/internal/encoding`
   - `PARQUET_TEST_DATA="$(pwd)/parquet-testing/data" go test ./...`
   - `go vet ./parquet/internal/encoding`
   


-- 
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