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)
This commit is contained in:
Victor Stinner 2012-05-02 00:29:36 +02:00
parent cc1c146c7a
commit b5c3ea3af3
1 changed files with 2 additions and 2 deletions

View File

@ -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;
}