4 ms·
I also did this when searching for a fast string-to-float conversion function for ClickHouse: https://github.com/ClickHouse/ClickHouse/blob/master/src/IO/readF
by zX41ZdbW 4y ago
I also did this when searching for a fast string-to-float conversion function for ClickHouse:
https://github.com/ClickHouse/ClickHouse/blob/master/src/IO/readFloatText.h#L38 https://github.com/ClickHouse/ClickHouse/blob/master/src/IO/...
- we create a table, insert all four billion floats there, and check our functions with SQL queries.
Currently, the state-of-the-art library is https://github.com/lemire/fast_double_parser https://github.com/lemire/fast_double_parser, but we use a slightly worse (but more performant) routine.
It is also interesting how to format floats in string in an efficient and user-friendly way.
For this problem, we switched iteratively: strtod -> Google's Double Conversion -> Ryu (patched) -> Dragonbox. Currently, we use Dragonbox.
- ignoramous 4y ago> ...but we use a slightly worse (but more performant) routine. If it (dragonbox?) is more performant, why is it also worse?
- wiredfool 4y agoPresumably it's not as accurate?
- nickpeterson 4y agoSomeone needs to make a bumper sticker for developers that says “fast and wrong”. I’d imagine non-programmers would buy more of them for other reasons…
- Dylan16807 4y agoIt's only on edge cases that floating point isn't mathematically wrong. And sometimes you don't mind an extra couple ULPs of drift.
- fsckboy 4y agofast and wrong? that's not a great bumper sticker to have when you're getting pulled over for speeding.
- dantillberg 4y agoThe fast algorithm is less accurate in the least significant bits. In zX41ZdbW's first link above, there's a code comment that includes the exact count of numbers grouped by how inaccurate the results were.