]> Cypherpunks repositories - gostls13.git/commit
strconv: use % instead of computing the remainder from the quotient
authorRobert Griesemer <gri@golang.org>
Fri, 10 Mar 2017 23:14:54 +0000 (15:14 -0800)
committerRobert Griesemer <gri@golang.org>
Sat, 11 Mar 2017 00:14:24 +0000 (00:14 +0000)
commit95c5227c15da3c0c61eeea70f0a8288088301b98
treefbd7b556528ea8735b4f29c5e7b336f74e52b78b
parente19f184b8f61529980c24973d5522dc67e3d8525
strconv: use % instead of computing the remainder from the quotient

The compiler recognizes that in a sequence q = x/y; r = x%y only
one division is required. Remove prior work-arounds and write
more readable straight-line code (this also results in fewer
instructions, though it doesn't appear to affect the benchmarks
significantly).

name          old time/op  new time/op  delta
FormatInt-8   2.95µs ± 1%  2.92µs ± 5%   ~     (p=0.952 n=5+5)
AppendInt-8   1.91µs ± 1%  1.89µs ± 2%   ~     (p=0.421 n=5+5)
FormatUint-8   795ns ± 2%   782ns ± 4%   ~     (p=0.444 n=5+5)
AppendUint-8   557ns ± 1%   557ns ± 2%   ~     (p=0.548 n=5+5)

https://perf.golang.org/search?q=upload:20170310.1

Also:
- use uint instead of uintptr where we want to guarantee single-
  register operations
- remove some unnecessary conversions (before indexing)
- add more comments and fix some comments

Change-Id: I04858dc2d798a6495879d9c7cfec2fdc2957b704
Reviewed-on: https://go-review.googlesource.com/38071
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
src/strconv/itoa.go