[RFC] Faster implementation of Integer to string conversion.
simonmarhaskell at gmail.com
Fri Apr 28 05:29:15 EDT 2006
Bertram Felgenhauer wrote:
> several people have noted that printing integers is slow. The attached
> patch implements a faster version of the jtos (read: positive integer
> to string) function in GHC's Num library. The algorithm is a divide and
> conquer algorithm, that converts numbers to base b by converting them
> to base b^2 first, and then splitting the digits.
> - I've tested the speed on my computer (which has an Athlon XP processor)
> and it seems to be of comparable speed as the original for small numbers
> and way faster for big numbers (read: a few hundred or thousand digits).
> - The changed conversion code is a much better list producer than the
> original one, which generates digits starting with the last.
> - There's similar code in Numeric.lhs, that deals with arbitrary bases.
> The current patch does not deal with this. (see questions below)
> - musabi on #haskell mentioned that there's interest in replacing GMP as
> the bignum implementation. This is independent of changing this string
> conversion, as far as I can see.
I'm tempted to commit this patch, but I want to make sure it's not a
performance regression for small integers. When you say "comparable"
performance, what does that mean exactly? Printing small integers is by
far the most common case. Perhaps we should special-case the small
integers (i.e. the S# constructor)?
More information about the Libraries