]> git.ipfire.org Git - thirdparty/Python/cpython.git/commit
Issue #14744: Use the new _PyUnicodeWriter internal API to speed up str%args and...
authorVictor Stinner <victor.stinner@gmail.com>
Tue, 29 May 2012 10:57:52 +0000 (12:57 +0200)
committerVictor Stinner <victor.stinner@gmail.com>
Tue, 29 May 2012 10:57:52 +0000 (12:57 +0200)
commitd3f0882dfb3a15d604de1b1620b2bf8de9d643bb
tree16c78bd58f57ffce487f71bb075372d72cfdcbde
parenta1b0c9fc4d68cd4e1103456d0cedf2ef3bbbfe9a
Issue #14744: Use the new _PyUnicodeWriter internal API to speed up str%args and str.format(args)

 * Formatting string, int, float and complex use the _PyUnicodeWriter API. It
   avoids a temporary buffer in most cases.
 * Add _PyUnicodeWriter_WriteStr() to restore the PyAccu optimization: just
   keep a reference to the string if the output is only composed of one string
 * Disable overallocation when formatting the last argument of str%args and
   str.format(args)
 * Overallocation allocates at least 100 characters: add min_length attribute
   to the _PyUnicodeWriter structure
 * Add new private functions: _PyUnicode_FastCopyCharacters(),
   _PyUnicode_FastFill() and _PyUnicode_FromASCII()

The speed up is around 20% in average.
12 files changed:
Include/complexobject.h
Include/floatobject.h
Include/longobject.h
Include/unicodeobject.h
Misc/NEWS
Objects/complexobject.c
Objects/floatobject.c
Objects/longobject.c
Objects/stringlib/asciilib.h
Objects/stringlib/unicode_format.h
Objects/unicodeobject.c
Python/formatter_unicode.c