]> Cypherpunks repositories - gostls13.git/commitdiff
pidigits: Remove TODO, minor improvements
authorEvan Shaw <chickencha@gmail.com>
Sun, 31 Oct 2010 03:16:44 +0000 (20:16 -0700)
committerRobert Griesemer <gri@golang.org>
Sun, 31 Oct 2010 03:16:44 +0000 (20:16 -0700)
I tried adding a Scale method to big.Int and it didn't make any noticeable
difference, so I'm removing my TODO.

Also got rid of a few obvious allocations that I missed earlier for a modest
improvement (~5%).

R=golang-dev, gri
CC=golang-dev
https://golang.org/cl/2711043

test/bench/pidigits.go

index 55da379438cf513ae0d839edebbe216415006e23..e59312177f4144705af7034c3c538aee134b397c 100644 (file)
@@ -49,6 +49,7 @@ var silent = flag.Bool("s", false, "don't print result")
 var (
        tmp1  = big.NewInt(0)
        tmp2  = big.NewInt(0)
+       tmp3  = big.NewInt(0)
        y2    = big.NewInt(0)
        bigk  = big.NewInt(0)
        numer = big.NewInt(1)
@@ -80,7 +81,6 @@ func extract_digit() int64 {
 }
 
 func next_term(k int64) {
-       // TODO(eds) If big.Int ever gets a Scale method, y2 and bigk could be int64
        y2.SetInt64(k*2 + 1)
        bigk.SetInt64(k)
 
@@ -92,8 +92,8 @@ func next_term(k int64) {
 }
 
 func eliminate_digit(d int64) {
-       tmp := big.NewInt(0).Set(denom)
-       accum.Sub(accum, tmp.Mul(tmp, big.NewInt(d)))
+       tmp3.SetInt64(d)
+       accum.Sub(accum, tmp3.Mul(denom, tmp3))
        accum.Mul(accum, ten)
        numer.Mul(numer, ten)
 }