From e4136fe91c96cecb7d5c4f4be98a4fedd646705d Mon Sep 17 00:00:00 2001 From: Evan Shaw Date: Tue, 20 Apr 2010 21:41:58 -0700 Subject: [PATCH] big: eliminate redundant array lookups This gives about a 6% performance improvement to pidigits. Thanks to Russ for the suggestion. R=rsc, gri CC=golang-dev https://golang.org/cl/957041 --- src/pkg/big/nat.go | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/pkg/big/nat.go b/src/pkg/big/nat.go index 456952aa88..6c7e6e722d 100644 --- a/src/pkg/big/nat.go +++ b/src/pkg/big/nat.go @@ -544,13 +544,16 @@ func shiftLeft(dst, src []Word, n uint) { } ñ := _W - n + x := src[len(src)-1] if len(dst) > len(src) { - dst[len(src)] |= src[len(src)-1] >> ñ + dst[len(src)] = x >> ñ } for i := len(src) - 1; i >= 1; i-- { - dst[i] = src[i]<>ñ + y := src[i-1] + dst[i] = x<>ñ + x = y } - dst[0] = src[0] << n + dst[0] = x << n } @@ -560,10 +563,13 @@ func shiftRight(dst, src []Word, n uint) { } ñ := _W - n + x := src[0] for i := 0; i < len(src)-1; i++ { - dst[i] = src[i]>>n | src[i+1]<<ñ + y := src[i+1] + dst[i] = x>>n | y<<ñ + x = y } - dst[len(src)-1] = src[len(src)-1] >> n + dst[len(src)-1] = x >> n } -- 2.50.0