]> Cypherpunks repositories - gostls13.git/commitdiff
pidigits: ~10% performance win by using adds instead of shifts
authorRobert Griesemer <gri@golang.org>
Tue, 27 Apr 2010 21:06:53 +0000 (14:06 -0700)
committerRobert Griesemer <gri@golang.org>
Tue, 27 Apr 2010 21:06:53 +0000 (14:06 -0700)
user time for pidigits -s -n=10000:
6.466s w/ adds
7.138s w/ shifts

R=rsc
CC=golang-dev
https://golang.org/cl/1021041

test/bench/pidigits.go

index a05515028ae7a843763b01444c14fb219685df75..3e455dc8385b76b9079b2c1fd3563d83c0129dc2 100644 (file)
@@ -63,7 +63,7 @@ func extract_digit() int64 {
        }
 
        // Compute (numer * 3 + accum) / denom
-       tmp1.Lsh(numer, 1)
+       tmp1.Add(numer, numer) // tmp1.Lsh(numer, 1)
        tmp1.Add(tmp1, numer)
        tmp1.Add(tmp1, accum)
        tmp1.DivMod(tmp1, denom, tmp2)
@@ -84,7 +84,7 @@ func next_term(k int64) {
        y2.New(k*2 + 1)
        bigk.New(k)
 
-       tmp1.Lsh(numer, 1)
+       tmp1.Add(numer, numer) // tmp1.Lsh(numer, 1)
        accum.Add(accum, tmp1)
        accum.Mul(accum, y2)
        numer.Mul(numer, bigk)