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]
