TL;DR
This paper introduces a highly efficient method for parsing decimal numbers into binary floating-point format, achieving gigabyte-per-second speeds suitable for high-throughput systems, and has been adopted in major software libraries.
Contribution
The paper presents a novel, fast decimal parsing algorithm that reduces computation to minimal multiplications, enabling significant performance improvements over existing standard library functions.
Findings
Parsing speed increased by several times compared to standard C library functions
Method is effective across multiple architectures including Intel, AMD, ARM, and POWER9
Open source implementation adopted by major systems like Apache Arrow and Yandex ClickHouse
Abstract
With disks and networks providing gigabytes per second, parsing decimal numbers from strings becomes a bottleneck. We consider the problem of parsing decimal numbers to the nearest binary floating-point value. The general problem requires variable-precision arithmetic. However, we need at most 17 digits to represent 64-bit standard floating-point numbers (IEEE 754). Thus we can represent the decimal significand with a single 64-bit word. By combining the significand and precomputed tables, we can compute the nearest floating-point number using as few as one or two 64-bit multiplications. Our implementation can be several times faster than conventional functions present in standard C libraries on modern 64-bit systems (Intel, AMD, ARM and POWER9). Our work is available as open source software used by major systems such as Apache Arrow and Yandex ClickHouse. The Go standard library has…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Code & Models
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
