mirror of
https://github.com/golang/go
synced 2024-11-19 14:44:40 -07:00
fmt: add ascii fast path for decoding verbs
name old time/op new time/op delta SprintfSlowParsingPath 108ns ± 4% 103ns ± 4% -4.53% (p=0.000 n=18+18) Change-Id: I174463f303d1857e8d5b8a6283c025b3546e7b39 Reviewed-on: https://go-review.googlesource.com/44450 Run-TryBot: Martin Möhrmann <moehrmann@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Rob Pike <r@golang.org>
This commit is contained in:
parent
6661cf6dfd
commit
629b5e7561
@ -1201,6 +1201,14 @@ func BenchmarkSprintfTruncateString(b *testing.B) {
|
||||
})
|
||||
}
|
||||
|
||||
func BenchmarkSprintfSlowParsingPath(b *testing.B) {
|
||||
b.RunParallel(func(pb *testing.PB) {
|
||||
for pb.Next() {
|
||||
Sprintf("%.v", nil)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
func BenchmarkSprintfQuoteString(b *testing.B) {
|
||||
b.RunParallel(func(pb *testing.PB) {
|
||||
for pb.Next() {
|
||||
|
@ -1067,8 +1067,11 @@ formatLoop:
|
||||
break
|
||||
}
|
||||
|
||||
verb, w := utf8.DecodeRuneInString(format[i:])
|
||||
i += w
|
||||
verb, size := rune(format[i]), 1
|
||||
if verb >= utf8.RuneSelf {
|
||||
verb, size = utf8.DecodeRuneInString(format[i:])
|
||||
}
|
||||
i += size
|
||||
|
||||
switch {
|
||||
case verb == '%': // Percent does not absorb operands and ignores f.wid and f.prec.
|
||||
|
Loading…
Reference in New Issue
Block a user