From: Victor Stinner Date: Tue, 1 May 2012 22:29:36 +0000 (+0200) Subject: Issue #14687: Optimize str%args X-Git-Tag: v3.3.0a4~318 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=b5c3ea3af35e1b55079ac8018e52935f3a43d032;p=thirdparty%2FPython%2Fcpython.git 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) --- diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c index 18bc07f908d2..95993e879fb4 100644 --- a/Objects/unicodeobject.c +++ b/Objects/unicodeobject.c @@ -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; }