项目作者: jeaiii

项目描述 :
Fast integer to ascii / integer to string conversion
高级语言: C++
项目地址: git://github.com/jeaiii/itoa.git
创建时间: 2017-11-10T19:37:21Z
项目社区:https://github.com/jeaiii/itoa

开源协议:MIT License

下载


itoa - Fast integer to ascii / integer to string conversion

windows

  • newest version: jeaiii_to_text.h
  • 0 dependency header only - as in absolutely no dependencies on ANY other headers
  • 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)
  • compiles on clang, msvc, and gcc as C++11 or later
  • written to specialize well based on integer type (size, signed, unsigned) and possible values determined at compile time
  • Thanks to Junekey Jeon for the great write-up 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.

  1. -----------------------------------------------------
  2. Benchmark Time CPU Iterations
  3. -----------------------------------------------------
  4. BM_fmt 16.6 ns 10.5 ns 75504520
  5. 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 - worst case for branch prediction based on number of digits

u32toa_chart

jeaiii vs. fmt