Commit b5c3ea3a authored by Victor Stinner's avatar Victor Stinner

Issue #14687: Optimize str%args

 * formatfloat() uses unicode_fromascii() instead of PyUnicode_DecodeASCII()
   to not have to check characters, we know that it is really ASCII
 * Use PyUnicode_FromOrdinal() instead of _PyUnicode_FromUCS4() to format
   a character: if avoids a call to ucs4lib_find_max_char() to compute
   the maximum character (whereas we already know it, it is just the character
   itself)
parent cc1c146c
......@@ -13431,7 +13431,7 @@ formatfloat(PyObject *v, int flags, int prec, int type)
(flags & F_ALT) ? Py_DTSF_ALT : 0, NULL);
if (p == NULL)
return NULL;
result = PyUnicode_DecodeASCII(p, strlen(p), NULL);
result = unicode_fromascii((unsigned char*)p, strlen(p));
PyMem_Free(p);
return result;
}
......@@ -13947,7 +13947,7 @@ PyUnicode_Format(PyObject *format, PyObject *args)
Py_UCS4 ch = formatchar(v);
if (ch == (Py_UCS4) -1)
goto onError;
temp = _PyUnicode_FromUCS4(&ch, 1);
temp = PyUnicode_FromOrdinal(ch);
break;
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment