[PATCH] Define std::to_chars and std::from_chars for C++17 (P0067R5, partial)

Jonathan Wakely jwakely@redhat.com
Mon Apr 10 13:07:00 GMT 2017


On 07/04/17 13:29 +0100, Jonathan Wakely wrote:
>This adds another piece of the C++17 library, the std::to_chars and
>std::from_chars functions for converting numbers to/from strings. This
>only adds the integer support, floating point types will require a lot
>more work.
>
>This has only been lightly optimised, so it beats printf on average,
>but there's probably more opportunity for improvement. I didn't
>investigate whether doing all work with unsigned long long would be
>faster, instead of using function templates specialized for unsigned
>int, unsigned long and unsigned long long. It should help code size,
>but I don't know if it would be faster. I also didn't investigate
>whether doing from_chars in two stages would be better, i.e. finding
>all the characters that are valid digits in the given base first, and
>then converting them to an integer in a second step. I'm sure there's
>lots of tuning that could be done, but I hope this is good enough to
>start with.

I forgot to say that most of the optimisations I did include come from
a talk by Andrei Alexandrescu:

https://www.slideshare.net/andreialexandrescu1/three-optimization-tips-for-c
https://www.facebook.com/notes/facebook-engineering/three-optimization-tips-for-c/10151361643253920

Whether these actually help might be debatable. I think I did test all
of them against the simpler code before including them.



More information about the Libstdc++ mailing list