mirror of
https://github.com/python/cpython.git
synced 2025-08-04 17:08:35 +00:00
bpo-37587: Make json.loads faster for long strings (GH-14752)
When scanning the string, most characters are valid, so checking for invalid characters first means never needing to check the value of strict on valid strings, and only needing to check it on invalid characters when doing non-strict parsing of invalid strings. This provides a measurable reduction in per-character processing time (~11% in the pre-merge patch testing).
This commit is contained in:
parent
9211e2fd81
commit
8a758f5b99
2 changed files with 2 additions and 1 deletions
|
@ -439,7 +439,7 @@ scanstring_unicode(PyObject *pystr, Py_ssize_t end, int strict, Py_ssize_t *next
|
|||
if (c == '"' || c == '\\') {
|
||||
break;
|
||||
}
|
||||
else if (strict && c <= 0x1f) {
|
||||
else if (c <= 0x1f && strict) {
|
||||
raise_errmsg("Invalid control character at", pystr, next);
|
||||
goto bail;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue