Minor std::to_chars optimisation for base 10
__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
This commit is contained in:
parent
27dada7d06
commit
d0e086ae4f
2 changed files with 8 additions and 3 deletions
|
@ -1,3 +1,8 @@
|
|||
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.
|
||||
|
|
|
@ -92,11 +92,11 @@ namespace __detail
|
|||
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
|
||||
|
|
Loading…
Add table
Reference in a new issue