circular_buffer icon indicating copy to clipboard operation
circular_buffer copied to clipboard

resize is slow

Open jeremy-coulon opened this issue 1 year ago • 0 comments

Hello,

Would it be possible to improve complexity of circular_buffer<T>::resize(new_size, item) in the case where T is scalar ?

Currently, complexity is always linear.

It would be nice to have constant complexity when T is a scalar type and no reallocation happens (ie. new_size <= capacity()).

When we want to reduce size of buffer (ie. new_size < size()), you could call erase_end(n) internally which already implements an optimization for scalar types.

When we want to increase size of buffer, you could optimize for scalar types by calling std::memset() at most 2 times.

jeremy-coulon avatar Mar 31 '23 09:03 jeremy-coulon