1. 10 Jun, 2011 11 commits
  2. 09 Jun, 2011 13 commits
  3. 08 Jun, 2011 13 commits
  4. 07 Jun, 2011 3 commits
    • Michael T. Jones's avatar
      big.nat: Improved speed of nat-to-string conversion · d5c45c54
      Michael T. Jones authored
      Three optimizations: First, special-case power of two bases
      that partion a Word(), bases 2, 4, 16, and 256. These can
      be moved directly from internal Word() storage to the output
      without multiprecision operations. Next, same approach for
      the other power-of-two bases, 8, 32, 64, and 128. These
      don't fill a Word() evenly, so special handling is needed
      for those cases where input spans the high-bits of one Word
      and the low bis of the next one.  Finally, implement the
      general case for others bases in 2 <= base <= 256 using
      superbases, the largest power of base representable in a
      Word(). For base ten, this is 9 digits and a superbase of
      10^9 for 32-bit Words and 19 digits and 10^19 for 64-bit
      compiles. This way we do just 1/9th or 1/19th of the expensive
      multiprecision divisions, unpacking superdigits using fast
      native machine arithmetic. The resulting code runs 7x to
      800x the speed of the previous approach, depending on the
      length of the number to be converted--longer is relatively
      faster.
      
      Also, extended the tests and benchmarks for string to nat
      (scan()) and nat to string (string()) functions. A further
      enhancement awaits the next CL to make general cases about
      7x faster for long cases.
      
      R=gri
      CC=golang-dev
      https://golang.org/cl/4595041
      d5c45c54
    • Robert Griesemer's avatar
      C+A: add Michael T. Jones (Google, gmail account) · c5281d7a
      Robert Griesemer authored
      R=rsc, bradfitz
      CC=golang-dev
      https://golang.org/cl/4598041
      c5281d7a
    • Brad Fitzpatrick's avatar
      29e4775c