Followup to #3838 which is adding a benchmark - thanks achabense!
- Alex Guteniev (@AlexGuteniev) suggested using
basic_string::resize_and_overwrite, creating an _Ugly version for unconditional use internally. (We generally avoid adding totally novel secret machinery to Standard classes as it can become a maintenance burden, but simply having _Ugly names to access Future Technology is easy and common.)
- Alex Guteniev (@AlexGuteniev) also suggested investigating whether branchless codegen for assigning
_Elem0 vs. _Elem1 would be superior. (Note: we cannot assume that their values are consecutive, they could be 'M' and 'E'.)
- I suggest investigating SIMD, as this would seem to be highly amenable to vectorization.
Regardless of what's investigated, I recommend profiling each change in isolation.
Followup to #3838 which is adding a benchmark - thanks achabense!
basic_string::resize_and_overwrite, creating an_Uglyversion for unconditional use internally. (We generally avoid adding totally novel secret machinery to Standard classes as it can become a maintenance burden, but simply having_Uglynames to access Future Technology is easy and common.)_Elem0vs._Elem1would be superior. (Note: we cannot assume that their values are consecutive, they could be'M'and'E'.)Regardless of what's investigated, I recommend profiling each change in isolation.