mirror of
https://github.com/golang/go
synced 2024-11-20 04:14:49 -07:00
Trivial optimization.
Cached string indexing in inner loop of Btoui64. Before: strconv_test.BenchmarkAtoi 5000000 309 ns/op strconv_test.BenchmarkAtoiNeg 5000000 325 ns/op strconv_test.BenchmarkAtoi64 5000000 465 ns/op strconv_test.BenchmarkAtoi64Neg 5000000 469 ns/op After: strconv_test.BenchmarkAtoi 10000000 182 ns/op strconv_test.BenchmarkAtoiNeg 10000000 193 ns/op strconv_test.BenchmarkAtoi64 10000000 251 ns/op strconv_test.BenchmarkAtoi64Neg 10000000 258 ns/op R=golang-dev, gri CC=golang-dev https://golang.org/cl/1227042
This commit is contained in:
parent
bcdcf395e5
commit
2db47c9083
@ -77,13 +77,14 @@ func Btoui64(s string, b int) (n uint64, err os.Error) {
|
||||
|
||||
for i := 0; i < len(s); i++ {
|
||||
var v byte
|
||||
d := s[i]
|
||||
switch {
|
||||
case '0' <= s[i] && s[i] <= '9':
|
||||
v = s[i] - '0'
|
||||
case 'a' <= s[i] && s[i] <= 'z':
|
||||
v = s[i] - 'a' + 10
|
||||
case 'A' <= s[i] && s[i] <= 'Z':
|
||||
v = s[i] - 'A' + 10
|
||||
case '0' <= d && d <= '9':
|
||||
v = d - '0'
|
||||
case 'a' <= d && d <= 'z':
|
||||
v = d - 'a' + 10
|
||||
case 'A' <= d && d <= 'Z':
|
||||
v = d - 'A' + 10
|
||||
default:
|
||||
n = 0
|
||||
err = os.EINVAL
|
||||
|
Loading…
Reference in New Issue
Block a user