English

Converting an Integer to a Decimal String in Under Two Nanoseconds

Data Structures and Algorithms 2026-05-07 v1

Abstract

Converting binary integers to variable-length decimal strings is a fundamental operation in computing. Conventional fast approaches rely on recursive division and small lookup tables. We propose a SIMD-based algorithm that leverages integer multiply-add instructions available on recent AMD and Intel processors. Our method eliminates lookup tables entirely and computes multiple quotients and remainders in parallel. Additionally, we introduce a dual-variant design with dynamic selection that adapts to input characteristics: a branch-heavy variant optimized for homogeneous digit-length distributions and a branch-light variant for heterogeneous datasets. Our single-core algorithm consistently outperforms all competing methods across the full range of integer sizes, running 1.4-2x faster than the closest competitor and 2-4x faster than the C++ standard library function std::to_chars across tested workloads.

Keywords

Cite

@article{arxiv.2604.26019,
  title  = {Converting an Integer to a Decimal String in Under Two Nanoseconds},
  author = {Jaël Champagne Gareau and Daniel Lemire},
  journal= {arXiv preprint arXiv:2604.26019},
  year   = {2026}
}

Comments

Software at https://github.com/fastfloat/int_serialization_benchmark

R2 v1 2026-07-01T12:39:55.500Z