__to_chars_10_impl is quite fast. According to the IACA the main loop
takes only 6.0 cycles, the whole function with one iteration takes
10.0 cycles. Replacing the __first[pos] and __first[pos - 1] with
__first[0] and __first[1] drops the function time to 7.53 cycles.
2019-09-09 Antony Polukhin <antoshkka@gmail.com>
* include/bits/charconv.h (__detail::__to_chars_10_impl): Replace
final offsets with constants.
From-SVN: r275514
+2019-09-09 Antony Polukhin <antoshkka@gmail.com>
+
+ * include/bits/charconv.h (__detail::__to_chars_10_impl): Replace
+ final offsets with constants.
+
2019-09-09 Jonathan Wakely <jwakely@redhat.com>
* include/bits/range_access.h (__adl_to_address): Remove.
if (__val >= 10)
{
auto const __num = __val * 2;
- __first[__pos] = __digits[__num + 1];
- __first[__pos - 1] = __digits[__num];
+ __first[1] = __digits[__num + 1];
+ __first[0] = __digits[__num];
}
else
- __first[__pos] = '0' + __val;
+ __first[0] = '0' + __val;
}
} // namespace __detail