itoa icon indicating copy to clipboard operation
itoa copied to clipboard

Fast integer to ascii / integer to string conversion

itoa - Fast integer to ascii / integer to string conversion

  • newest version: jeaiii_to_text.h
  • 0 dependancy header only
  • fast - fasted tested on vs2019 in x86 and x64 for all digit lengths, uniform random bits, and uniform random digit lengths (latest version is even 25% faster than before) using https://github.com/jeaiii/itoa-benchmark
  • small - simple code that produces good compiled code even in debug builds (no nested functions)
  • written to specialize well based on integer type (size, signed, unsigned)
  • Thanks to Junekey Jeon for the great writeup here, providing better insight into more rigorous mathematical foundations which eliminated an unneeded addition, and renewing my interest into making an even faster version

Check it out vs. {fmt} on godbolt.org

Disclaimer: This is not a good way to benchmark. It's not very repeatable and google benchmark is compiled in debug, although fmt being mostly header is optimized and inlined well. The performance charts below are much more accurate.

-----------------------------------------------------
Benchmark           Time             CPU   Iterations
-----------------------------------------------------
BM_fmt           16.6 ns         10.5 ns     75504520
BM_jea           10.2 ns         4.13 ns    159688774

Click for interactive performance charts

The last column is uniform random length numbers from 1 to N digits

u32toa_chart

jeaiii vs. fmt