Faster Integer Reading and Printing in SBCL

After the float work, the obvious question was: what about integers? They are printed and read probably far more often than floats, in logs, CSV files, protocols and source code. It turns out it was possible to spill the work from float stack into integer stack (pun intended), and the result is in two smaller patches: a fast path in the reader for numbers read from strings, and base-10 printing of integers without a division per digit. Both are in my SBCL fork, in the branches sbcl-read-fast and sbcl-int-print, and the notes, tests, benchmarks and patches are with the float work in the same repository, in integers.md. ...

October 11, 2026 · Arthur Miller

Faster Float Printing and Reading in SBCL

I have been working on a set of patches for SBCL that make printing and reading floating-point numbers faster. It turned out quite OK: they are several times faster, and without changing what is printed or read. Printing now uses Victor Zverovich's zmij algorithm, and reading uses the Eisel-Lemire algorithm from Daniel Lemire's fast_float. Everything, the tests, the benchmarks, the results and the patches, is in sbcl-faster-float-io on GitHub, and the code is in two branches of my SBCL fork: sbcl-zmij for printing and sbcl-parse-float for reading. If you would like to try them both out, they are put together in this branch. ...

October 9, 2026 · Arthur Miller