summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@gmail.com>2012-05-01 22:29:36 (GMT)
committerVictor Stinner <victor.stinner@gmail.com>2012-05-01 22:29:36 (GMT)
commitb5c3ea3af35e1b55079ac8018e52935f3a43d032 (patch)
treea394313fa70bab6f985f03b9d8216a2e57a7284d
parentcc1c146c7a42e4b10b377f448d841573d74ae442 (diff)
downloadcpython-b5c3ea3af35e1b55079ac8018e52935f3a43d032.zip
cpython-b5c3ea3af35e1b55079ac8018e52935f3a43d032.tar.gz
cpython-b5c3ea3af35e1b55079ac8018e52935f3a43d032.tar.bz2
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)
-rw-r--r--Objects/unicodeobject.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c
index 18bc07f..95993e8 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;
}