wesm commented on PR #13753:
URL: https://github.com/apache/arrow/pull/13753#issuecomment-1208362155

   I've done a little exploration locally and concluded that 
`shared_ptr<DataType>` versus `const DataType*` has no impact on the 
performance of `Function::DispatchExact` (at least on recent clang), which 
confirms the general guidance that dereferencing shared pointers is no 
different than a raw pointer — it's the creation, copying, and destruction of 
shared pointers that's expensive, especially in a multithreaded setting. 
   
   The last thing I'm interested in is the "bootup time" of the function 
registry, so I'm going to compare the before and after performance of that and 
report it here. If there is no significant difference, I will refactor this PR 
to restore shared pointers to `InputType` and `OutputType` but rather avoid 
allowing shared pointer copies to get inlined in these functions, so hopefully 
that will yield the same kind of reduction in binary bloat. There are some 
other beneficial changes here so I'd like to get those in — I'll report back 
when I have that extra performance data and have done the refactoring. 
   
   There's probably other places where we're either passing a shared pointer 
where there is no need or where we inline 
non-performance-sensitive-constructors which copy shared pointers where there 
is similarly little need, so let's be an eye out for htat. 


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