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

   ### Rationale for this change
   
   Parquet to Arrow conversions for narrow and unsigned integers currently use 
reflection for every value. Integer-backed decimal conversions do the same when 
reading their source values. This per-value reflection is expensive for large 
columns.
   
   ### What changes are included in this PR?
   
   - Replace reflective integer assignments with typed conversion loops 
selected once per source and destination type.
   - Use typed INT32 and INT64 source loops for Decimal128 and Decimal256 
conversions.
   - Add boundary-value coverage for every existing integer and temporal 
destination type.
   - Add focused benchmarks for integer and decimal transfers.
   
   Results for 1 million values on an Apple M1 Pro:
   
   | Conversion | Before | After | Improvement |
   | --- | ---: | ---: | ---: |
   | INT32 to INT8 | 3.28 ms | 0.36 ms | 9.0x |
   | INT64 to UINT64 | 3.75 ms | 0.51 ms | 7.3x |
   | INT64 to Decimal128 | 4.65 ms | 1.53 ms | 3.0x |
   | INT64 to Decimal256 | 5.26 ms | 2.06 ms | 2.6x |
   
   Allocation counts are unchanged.
   
   ### Are these changes tested?
   
   Yes. The focused transfer tests, the full `parquet/pqarrow` suite, all 
`parquet/...` packages, and the focused race test pass.
   
   ### Are there any user-facing changes?
   
   No. This only improves Parquet read performance.
   


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