Commit d0e086ae by Antony Polukhin Committed by Jonathan Wakely

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
parent 27dada7d
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
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment