forked from mirror/go-json
Improve performance of encodeEscapedString
This commit is contained in:
parent
d373a4b7d7
commit
2840955164
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
|
// All values are true except for the ASCII control characters (0-31), the
|
||||||
// double quote ("), the backslash character ("\"), HTML opening and closing
|
// double quote ("), the backslash character ("\"), HTML opening and closing
|
||||||
// tags ("<" and ">"), and the ampersand ("&").
|
// tags ("<" and ">"), and the ampersand ("&").
|
||||||
var htmlSafeSet = [utf8.RuneSelf]bool{
|
var htmlSafeSet = [256]bool{
|
||||||
' ': true,
|
' ': true,
|
||||||
'!': true,
|
'!': true,
|
||||||
'"': false,
|
'"': false,
|
||||||
|
@ -108,6 +108,134 @@ var htmlSafeSet = [utf8.RuneSelf]bool{
|
||||||
'}': true,
|
'}': true,
|
||||||
'~': true,
|
'~': true,
|
||||||
'\u007f': 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
|
// 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
|
// write string, the fast path, without utf8 and escape support
|
||||||
i := 0
|
i := 0
|
||||||
for ; i < valLen; i++ {
|
for ; i < valLen; i++ {
|
||||||
c := s[i]
|
if !htmlSafeSet[s[i]] {
|
||||||
if c >= utf8.RuneSelf || !htmlSafeSet[c] {
|
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue