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/38071Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
Showing
Please register or sign in to comment