diff options
| author | Joe Tsai <joetsai@digital-static.net> | 2022-06-15 17:03:27 -0700 |
|---|---|---|
| committer | Gopher Robot <gobot@golang.org> | 2022-08-23 20:26:47 +0000 |
| commit | 70de482d17863e501be44450f8e60500a6f1b459 (patch) | |
| tree | 70f6c883081e51acb4535ef440293890d5f10e73 /src/bytes/buffer.go | |
| parent | 556c978400245b29c3150ba3a53da489d67f3f7e (diff) | |
| download | go-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.go | 5 |
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 |
