That one is very bad, this is obviously something we do all over the place.
Background:
- Basically all arrow
Arrays are Buffers when you reach the actual physical type (which can be quite deep because all our components are compound types etc)
Buffer is literally an Arc over some bytes, so cheap to clone
- But then we carry around erased arrow arrays, i.e. trait objects:
Box<dyn Array>
- Trait objects cannot implement
Clone because they literally dont know their size/layout at compile time
- But there's a hack for that
- All of the above is what I mean when I say "erased refcounted clone"
See #1745 for detailed benchmarks.
This is yet another example where fixing the issue once in DataCell and then using DataCell everywhere would be nice...
That one is very bad, this is obviously something we do all over the place.
Background:
Arrays areBuffers when you reach the actual physical type (which can be quite deep because all our components are compound types etc)Bufferis literally anArcover some bytes, so cheap to cloneBox<dyn Array>Clonebecause they literally dont know their size/layout at compile timeSee #1745 for detailed benchmarks.
This is yet another example where fixing the issue once in
DataCelland then usingDataCelleverywhere would be nice...