mirror of
https://github.com/golang/go
synced 2024-11-05 17:06:13 -07:00
strconv: simplify and optimize Itoa(small)
Use substring of digits for values < 10. name old time/op new time/op delta FormatIntSmall/7-4 4.54ns ± 1% 3.70ns ± 1% -18.41% (p=0.000 n=18+17) FormatIntSmall/42-4 4.54ns ± 1% 4.13ns ± 1% -9.02% (p=0.000 n=16+18) Change-Id: I0b521b563c13ef88aa2701049fa4a43760e884af Reviewed-on: https://go-review.googlesource.com/111285 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
This commit is contained in:
parent
63756e0c8f
commit
3c0bf181b7
@ -57,11 +57,10 @@ func AppendUint(dst []byte, i uint64, base int) []byte {
|
|||||||
|
|
||||||
// small returns the string for an i with 0 <= i < nSmalls.
|
// small returns the string for an i with 0 <= i < nSmalls.
|
||||||
func small(i int) string {
|
func small(i int) string {
|
||||||
off := 0
|
|
||||||
if i < 10 {
|
if i < 10 {
|
||||||
off = 1
|
return digits[i : i+1]
|
||||||
}
|
}
|
||||||
return smallsString[i*2+off : i*2+2]
|
return smallsString[i*2 : i*2+2]
|
||||||
}
|
}
|
||||||
|
|
||||||
const nSmalls = 100
|
const nSmalls = 100
|
||||||
|
@ -200,11 +200,15 @@ func BenchmarkAppendUint(b *testing.B) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func BenchmarkFormatIntSmall(b *testing.B) {
|
func BenchmarkFormatIntSmall(b *testing.B) {
|
||||||
const smallInt = 42
|
smallInts := []int64{7, 42}
|
||||||
|
for _, smallInt := range smallInts {
|
||||||
|
b.Run(Itoa(int(smallInt)), func(b *testing.B) {
|
||||||
for i := 0; i < b.N; i++ {
|
for i := 0; i < b.N; i++ {
|
||||||
s := FormatInt(smallInt, 10)
|
s := FormatInt(smallInt, 10)
|
||||||
BenchSink += len(s)
|
BenchSink += len(s)
|
||||||
}
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func BenchmarkAppendIntSmall(b *testing.B) {
|
func BenchmarkAppendIntSmall(b *testing.B) {
|
||||||
|
Loading…
Reference in New Issue
Block a user