Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Implement Iterators on Storage, arithmetic and comparisons use the St…
…orageIterators (#12274) The first step to get back some of the performance from the storage refactor. - New `ColumnLongStorageWithArray` and `ColumnDoubleStorageWithArray` interfaces allowing low-level iterators to iterate over the array directly. - Removed the `DoubleArrayAdapter`, `BigIntegerArrayAdapter` and `BigDecimalArrayAdapter` in favour of having `ColumnStorage` based facades allowing for some storage to present as others. - Moved the iterations in `NumericBinaryOpImplementation` into `StorageIterators`. Currently a lot of duplication to the `NumericComparison`. Will look to make more common later. The intention is to keep working on the common iteration layer as build up the operator space. Various tests on the performance impact of various parts (tested on my PC, over 1,000,000 additions, only provided for reference): - Using a builder versus populating array and bitset adds about 0.1ms. - Using the iterator over a tight inline loop appeared to be about 0.2ms - Using the array loops returns about 0.4ms over the getItemAsLong calls.
- Loading branch information