• Robert Griesemer's avatar
    strconv: use % instead of computing the remainder from the quotient · 95c5227c
    Robert Griesemer authored
    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: default avatarBrad Fitzpatrick <bradfitz@golang.org>
    Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    95c5227c
itoa.go 3.47 KB