Commit 2f480b10 authored by Robert Griesemer's avatar Robert Griesemer

pidigits: ~10% performance win by using adds instead of shifts

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
parent e42ebea9
...@@ -63,7 +63,7 @@ func extract_digit() int64 { ...@@ -63,7 +63,7 @@ func extract_digit() int64 {
} }
// Compute (numer * 3 + accum) / denom // Compute (numer * 3 + accum) / denom
tmp1.Lsh(numer, 1) tmp1.Add(numer, numer) // tmp1.Lsh(numer, 1)
tmp1.Add(tmp1, numer) tmp1.Add(tmp1, numer)
tmp1.Add(tmp1, accum) tmp1.Add(tmp1, accum)
tmp1.DivMod(tmp1, denom, tmp2) tmp1.DivMod(tmp1, denom, tmp2)
...@@ -84,7 +84,7 @@ func next_term(k int64) { ...@@ -84,7 +84,7 @@ func next_term(k int64) {
y2.New(k*2 + 1) y2.New(k*2 + 1)
bigk.New(k) bigk.New(k)
tmp1.Lsh(numer, 1) tmp1.Add(numer, numer) // tmp1.Lsh(numer, 1)
accum.Add(accum, tmp1) accum.Add(accum, tmp1)
accum.Mul(accum, y2) accum.Mul(accum, y2)
numer.Mul(numer, bigk) numer.Mul(numer, bigk)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment