aboutsummaryrefslogtreecommitdiff
path: root/src/bytes/buffer.go
diff options
context:
space:
mode:
authorJoe Tsai <joetsai@digital-static.net>2022-06-15 17:03:27 -0700
committerGopher Robot <gobot@golang.org>2022-08-23 20:26:47 +0000
commit70de482d17863e501be44450f8e60500a6f1b459 (patch)
tree70f6c883081e51acb4535ef440293890d5f10e73 /src/bytes/buffer.go
parent556c978400245b29c3150ba3a53da489d67f3f7e (diff)
downloadgo-70de482d17863e501be44450f8e60500a6f1b459.tar.xz
bytes: rely on utf8.AppendRune
This is both simpler and more performant. WriteRune 23.9µs ± 1% 22.8µs ± 8% -4.43% (p=0.006 n=8+10) ToUpper/longɐstringɐwithɐnonasciiⱯchars 573ns ± 4% 474ns ± 6% -17.27% (p=0.000 n=10+10) ToUpper/ɐɐɐɐɐ 236ns ± 6% 202ns ± 5% -14.12% (p=0.000 n=10+10) ToUpper/a\u0080\U0010ffff 98.8ns ± 6% 91.2ns ± 3% -7.67% (p=0.000 n=10+10) ToLower/LONGⱯSTRINGⱯWITHⱯNONASCIIⱯCHARS 511ns ± 3% 409ns ± 4% -20.02% (p=0.000 n=10+10) ToLower/ⱭⱭⱭⱭⱭ 178ns ± 4% 173ns ± 2% -2.76% (p=0.005 n=10+10) ToLower/A\u0080\U0010ffff 100ns ± 3% 91ns ± 2% -8.55% (p=0.000 n=10+10) Change-Id: I968ef194da2c115cbdcac2d3575c34c65e6a8a56 Reviewed-on: https://go-review.googlesource.com/c/go/+/412337 Reviewed-by: Ian Lance Taylor <iant@google.com> Auto-Submit: Joseph Tsai <joetsai@digital-static.net> TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: David Chase <drchase@google.com> Run-TryBot: Joseph Tsai <joetsai@digital-static.net>
Diffstat (limited to 'src/bytes/buffer.go')
-rw-r--r--src/bytes/buffer.go5
1 files changed, 2 insertions, 3 deletions
diff --git a/src/bytes/buffer.go b/src/bytes/buffer.go
index 0bacbda164..ee83fd8b36 100644
--- a/src/bytes/buffer.go
+++ b/src/bytes/buffer.go
@@ -298,9 +298,8 @@ func (b *Buffer) WriteRune(r rune) (n int, err error) {
if !ok {
m = b.grow(utf8.UTFMax)
}
- n = utf8.EncodeRune(b.buf[m:m+utf8.UTFMax], r)
- b.buf = b.buf[:m+n]
- return n, nil
+ b.buf = utf8.AppendRune(b.buf[:m], r)
+ return len(b.buf) - m, nil
}
// Read reads the next len(p) bytes from the buffer or until the buffer