It turns out we generate a ton of code just copying and manipulating shared_ptr<DataType> throughput arrow/compute, and especially in the configuration of the function/kernels registry. One function RegisterScalarArithmetic generates around 300kb of code, which on looking at disassembly contains a significant amount of inlined shared_ptr template code. I made an attempt to refactoring things to use const DataType* for function signatures which removes quite a bit of code bloat, and puts us on a path to using fewer shared_ptr's in general
Reporter: Wes McKinney / @wesm
Assignee: Wes McKinney / @wesm
PRs and other links:
Note: This issue was originally created as ARROW-17259. Please see the migration documentation for further details.
It turns out we generate a ton of code just copying and manipulating
shared_ptr<DataType>throughput arrow/compute, and especially in the configuration of the function/kernels registry. One functionRegisterScalarArithmeticgenerates around 300kb of code, which on looking at disassembly contains a significant amount of inlined shared_ptr template code. I made an attempt to refactoring things to useconst DataType*for function signatures which removes quite a bit of code bloat, and puts us on a path to using fewer shared_ptr's in generalReporter: Wes McKinney / @wesm
Assignee: Wes McKinney / @wesm
PRs and other links:
Note: This issue was originally created as ARROW-17259. Please see the migration documentation for further details.