summaryrefslogtreecommitdiffstats
path: root/Include
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@gmail.com>2015-10-14 07:56:53 (GMT)
committerVictor Stinner <victor.stinner@gmail.com>2015-10-14 07:56:53 (GMT)
commit772b2b09f279fdcb01bbd703735d35bd02dd8ec1 (patch)
tree06c585be7db2c586bb8e2a09c2e74a8b2188e841 /Include
parent661aaccf9def380540cc1d440761159a414094d1 (diff)
downloadcpython-772b2b09f279fdcb01bbd703735d35bd02dd8ec1.zip
cpython-772b2b09f279fdcb01bbd703735d35bd02dd8ec1.tar.gz
cpython-772b2b09f279fdcb01bbd703735d35bd02dd8ec1.tar.bz2
Optimize bytearray % args
Issue #25399: Don't create temporary bytes objects: modify _PyBytes_Format() to create work directly on bytearray objects. * Rename _PyBytes_Format() to _PyBytes_FormatEx() just in case if something outside CPython uses it * _PyBytes_FormatEx() now uses (char*, Py_ssize_t) for the input string, so bytearray_format() doesn't need tot create a temporary input bytes object * Add use_bytearray parameter to _PyBytes_FormatEx() which is passed to _PyBytesWriter, to create a bytearray buffer instead of a bytes buffer Most formatting operations are now between 2.5 and 5 times faster.
Diffstat (limited to 'Include')
-rw-r--r--Include/bytesobject.h6
1 files changed, 5 insertions, 1 deletions
diff --git a/Include/bytesobject.h b/Include/bytesobject.h
index fbb6322..b5b37ef 100644
--- a/Include/bytesobject.h
+++ b/Include/bytesobject.h
@@ -62,7 +62,11 @@ PyAPI_FUNC(void) PyBytes_Concat(PyObject **, PyObject *);
PyAPI_FUNC(void) PyBytes_ConcatAndDel(PyObject **, PyObject *);
#ifndef Py_LIMITED_API
PyAPI_FUNC(int) _PyBytes_Resize(PyObject **, Py_ssize_t);
-PyAPI_FUNC(PyObject *) _PyBytes_Format(PyObject *, PyObject *);
+PyAPI_FUNC(PyObject*) _PyBytes_FormatEx(
+ const char *format,
+ Py_ssize_t format_len,
+ PyObject *args,
+ int use_bytearray);
#endif
PyAPI_FUNC(PyObject *) PyBytes_DecodeEscape(const char *, Py_ssize_t,
const char *, Py_ssize_t,