forked from mirror/go-json
Merge pull request #51 from goccy/feature/improve-performance
Improve performance of encodeEscapedString
This commit is contained in:
commit
09fe33f8f0
133
encode_string.go
133
encode_string.go
|
@ -11,7 +11,7 @@ import (
|
|||
// All values are true except for the ASCII control characters (0-31), the
|
||||
// double quote ("), the backslash character ("\"), HTML opening and closing
|
||||
// tags ("<" and ">"), and the ampersand ("&").
|
||||
var htmlSafeSet = [utf8.RuneSelf]bool{
|
||||
var htmlSafeSet = [256]bool{
|
||||
' ': true,
|
||||
'!': true,
|
||||
'"': false,
|
||||
|
@ -108,6 +108,134 @@ var htmlSafeSet = [utf8.RuneSelf]bool{
|
|||
'}': true,
|
||||
'~': true,
|
||||
'\u007f': true,
|
||||
0x80: false,
|
||||
0x81: false,
|
||||
0x82: false,
|
||||
0x83: false,
|
||||
0x84: false,
|
||||
0x85: false,
|
||||
0x86: false,
|
||||
0x87: false,
|
||||
0x88: false,
|
||||
0x89: false,
|
||||
0x8a: false,
|
||||
0x8b: false,
|
||||
0x8c: false,
|
||||
0x8d: false,
|
||||
0x8e: false,
|
||||
0x8f: false,
|
||||
0x90: false,
|
||||
0x91: false,
|
||||
0x92: false,
|
||||
0x93: false,
|
||||
0x94: false,
|
||||
0x95: false,
|
||||
0x96: false,
|
||||
0x97: false,
|
||||
0x98: false,
|
||||
0x99: false,
|
||||
0x9a: false,
|
||||
0x9b: false,
|
||||
0x9c: false,
|
||||
0x9d: false,
|
||||
0x9e: false,
|
||||
0x9f: false,
|
||||
0xa0: false,
|
||||
0xa1: false,
|
||||
0xa2: false,
|
||||
0xa3: false,
|
||||
0xa4: false,
|
||||
0xa5: false,
|
||||
0xa6: false,
|
||||
0xa7: false,
|
||||
0xa8: false,
|
||||
0xa9: false,
|
||||
0xaa: false,
|
||||
0xab: false,
|
||||
0xac: false,
|
||||
0xad: false,
|
||||
0xae: false,
|
||||
0xaf: false,
|
||||
0xb0: false,
|
||||
0xb1: false,
|
||||
0xb2: false,
|
||||
0xb3: false,
|
||||
0xb4: false,
|
||||
0xb5: false,
|
||||
0xb6: false,
|
||||
0xb7: false,
|
||||
0xb8: false,
|
||||
0xb9: false,
|
||||
0xba: false,
|
||||
0xbb: false,
|
||||
0xbc: false,
|
||||
0xbd: false,
|
||||
0xbe: false,
|
||||
0xbf: false,
|
||||
0xc0: false,
|
||||
0xc1: false,
|
||||
0xc2: false,
|
||||
0xc3: false,
|
||||
0xc4: false,
|
||||
0xc5: false,
|
||||
0xc6: false,
|
||||
0xc7: false,
|
||||
0xc8: false,
|
||||
0xc9: false,
|
||||
0xca: false,
|
||||
0xcb: false,
|
||||
0xcc: false,
|
||||
0xcd: false,
|
||||
0xce: false,
|
||||
0xcf: false,
|
||||
0xd0: false,
|
||||
0xd1: false,
|
||||
0xd2: false,
|
||||
0xd3: false,
|
||||
0xd4: false,
|
||||
0xd5: false,
|
||||
0xd6: false,
|
||||
0xd7: false,
|
||||
0xd8: false,
|
||||
0xd9: false,
|
||||
0xda: false,
|
||||
0xdb: false,
|
||||
0xdc: false,
|
||||
0xdd: false,
|
||||
0xde: false,
|
||||
0xdf: false,
|
||||
0xe0: false,
|
||||
0xe1: false,
|
||||
0xe2: false,
|
||||
0xe3: false,
|
||||
0xe4: false,
|
||||
0xe5: false,
|
||||
0xe6: false,
|
||||
0xe7: false,
|
||||
0xe8: false,
|
||||
0xe9: false,
|
||||
0xea: false,
|
||||
0xeb: false,
|
||||
0xec: false,
|
||||
0xed: false,
|
||||
0xee: false,
|
||||
0xef: false,
|
||||
0xf0: false,
|
||||
0xf1: false,
|
||||
0xf2: false,
|
||||
0xf3: false,
|
||||
0xf4: false,
|
||||
0xf5: false,
|
||||
0xf6: false,
|
||||
0xf7: false,
|
||||
0xf8: false,
|
||||
0xf9: false,
|
||||
0xfa: false,
|
||||
0xfb: false,
|
||||
0xfc: false,
|
||||
0xfd: false,
|
||||
0xfe: false,
|
||||
0xff: false,
|
||||
}
|
||||
|
||||
// safeSet holds the value true if the ASCII character with the given array
|
||||
|
@ -222,8 +350,7 @@ func (e *Encoder) encodeEscapedString(s string) {
|
|||
// write string, the fast path, without utf8 and escape support
|
||||
i := 0
|
||||
for ; i < valLen; i++ {
|
||||
c := s[i]
|
||||
if c >= utf8.RuneSelf || !htmlSafeSet[c] {
|
||||
if !htmlSafeSet[s[i]] {
|
||||
break
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue