aboutsummaryrefslogtreecommitdiff
path: root/src/strconv
diff options
context:
space:
mode:
authorJoe Tsai <joetsai@digital-static.net>2022-06-15 17:39:59 -0700
committerJoseph Tsai <joetsai@digital-static.net>2023-08-17 05:23:49 +0000
commit2fcfdb96860855be0c88e10e3fd5bb858420cfe2 (patch)
treee67148d650571d8b6349da2d3e62c53857401c39 /src/strconv
parent1c0035401358c8bfc2ff646b1d950da5fcd6b355 (diff)
downloadgo-2fcfdb96860855be0c88e10e3fd5bb858420cfe2.tar.gz
go-2fcfdb96860855be0c88e10e3fd5bb858420cfe2.zip
strconv: rely on utf8.AppendRune
This is both simpler and more performant. Quote 268ns ± 5% 258ns ± 4% -3.70% (p=0.014 n=10+10) QuoteRune 28.9ns ± 3% 28.4ns ± 4% ~ (p=0.113 n=9+10) AppendQuote 165ns ± 3% 165ns ± 3% ~ (p=0.661 n=9+10) AppendQuoteRune 8.05ns ± 5% 7.75ns ± 7% ~ (p=0.065 n=10+9) Change-Id: Ib0ee332e970d4986026c05e5e0e368f41eff7977 Reviewed-on: https://go-review.googlesource.com/c/go/+/412338 TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@google.com> Run-TryBot: Joseph Tsai <joetsai@digital-static.net> Reviewed-by: Robert Griesemer <gri@google.com>
Diffstat (limited to 'src/strconv')
-rw-r--r--src/strconv/quote.go9
1 files changed, 2 insertions, 7 deletions
diff --git a/src/strconv/quote.go b/src/strconv/quote.go
index 1b5bddfeae..7c38433679 100644
--- a/src/strconv/quote.go
+++ b/src/strconv/quote.go
@@ -66,7 +66,6 @@ func appendQuotedRuneWith(buf []byte, r rune, quote byte, ASCIIonly, graphicOnly
}
func appendEscapedRune(buf []byte, r rune, quote byte, ASCIIonly, graphicOnly bool) []byte {
- var runeTmp [utf8.UTFMax]byte
if r == rune(quote) || r == '\\' { // always backslashed
buf = append(buf, '\\')
buf = append(buf, byte(r))
@@ -78,9 +77,7 @@ func appendEscapedRune(buf []byte, r rune, quote byte, ASCIIonly, graphicOnly bo
return buf
}
} else if IsPrint(r) || graphicOnly && isInGraphicList(r) {
- n := utf8.EncodeRune(runeTmp[:], r)
- buf = append(buf, runeTmp[:n]...)
- return buf
+ return utf8.AppendRune(buf, r)
}
switch r {
case '\a':
@@ -471,9 +468,7 @@ func unquote(in string, unescape bool) (out, rem string, err error) {
if r < utf8.RuneSelf || !multibyte {
buf = append(buf, byte(r))
} else {
- var arr [utf8.UTFMax]byte
- n := utf8.EncodeRune(arr[:], r)
- buf = append(buf, arr[:n]...)
+ buf = utf8.AppendRune(buf, r)
}
}