[Python-Dev] Replacement for array.array('u')?

Serhiy Storchaka storchaka at gmail.com
Fri Mar 22 07:31:48 EDT 2019


22.03.19 09:45, Victor Stinner пише:
> Internally, CPython has a _PyUnicodeWriter which is an efficient way
> to create a string but appending substrings or characters.
> _PyUnicodeWriter changes the internal storage format depending on
> characters code points (ascii or latin1: 1 byte/character, BMP: 2 b/c,
> full UCS: 4 b/c). I tried once to expose it in Python, but I wasn't
> convinced by performances. The overhead of method calls was quite
> significant, and I wasn't convinced by "writer += str" performance
> neither. Maybe I should try again. PyPy also has such object. It
> avoids the "str += str" hack in ceval.c to avoid very poor performance
> (_PyUnicodeWriter also uses overallocation which can be controlled
> with multiple parameters to reduce the number of realloc).
> 
> Another alternative would be have to add a "strarray" type similar to
> bytes/bytearray couple.

Another alternative of mutable string buffer and string builder is 
io.StringIO.



More information about the Python-Dev mailing list