diff options
author | Joe Tsai <joetsai@digital-static.net> | 2022-06-15 17:39:59 -0700 |
---|---|---|
committer | Joseph Tsai <joetsai@digital-static.net> | 2023-08-17 05:23:49 +0000 |
commit | 2fcfdb96860855be0c88e10e3fd5bb858420cfe2 (patch) | |
tree | e67148d650571d8b6349da2d3e62c53857401c39 /src/strconv | |
parent | 1c0035401358c8bfc2ff646b1d950da5fcd6b355 (diff) | |
download | go-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.go | 9 |
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) } } |