fast
fast copied to clipboard
Accurate number parsing
Current implementation has inaccurate number parsing.
How to Read Floating Point Numbers Accurately by William D. Clinger - a classic paper on number parsing.
mir.bignum.decimal can be used for parsing and precise conversion to double.
I'm sorry, but I couldn't find the energy to keep working on the library. I am aware that numbers in the "denormalized" range and IIRC with extreme exponents aren't parsed correctly. The rarer cases have a "goto" line to move their code out of the hot loop, but no implementation. The common range of values used in the original benchmark was supposed to be parsed accurately though.
You have done a great job with Mir for the Dlang ecosystem and I think if "fast" was supposed to be a JSON parser, building on top of that foundation would be a good idea. But it was really supposed to be a no dependency, everything inlined type of collection of some particularly fast algorithms developed in recent years or simply standard algorithms, but with the use of the latest SSE or AVX instruction sets. Fast number parsing was one such aspect with JSON as a practical application.
If the benchmark is changed to use more extreme values, I'd just opt for removing "fast" from the table. I had a good time with it and feel like it inspired others to try and optimize their implementations which may have benefited users of Firefox and other open or closed source software.