On 8 February 2016 at 09:07, Tres Seaver <[email protected]> wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > On 02/06/2016 05:35 AM, Marius Gedminas wrote: > >> And people who run build Python 2.7 with './configure && make && make >> install' >> >> Why does upstream Python default to UCS-2 builds on Linux anyway? > > I don't recall if it had any bearing on the choice of default, but > Long-running processes with large quantities of mostly-8-bit-compatible > text strings in RAM (Zope, nearly any other Eurocentric webapp) need > measurably less memory with UCS-2.
They can also end up being a bit faster as well, since most of their strings are smaller, and hence less data copying is needed. That's why Python 3 ended up switching to the combination of adaptive bit width sizing for str instances and non-contiguous storage for io.StringIO: individual strings use a bit width based on the largest code point they contain, while io.StringIO's non-contiguous storage means that if you avoid calling getvalue(), only the segments that actually contain higher code points need to use the higher bit widths. Cheers, Nick. -- Nick Coghlan | [email protected] | Brisbane, Australia _______________________________________________ Distutils-SIG maillist - [email protected] https://mail.python.org/mailman/listinfo/distutils-sig
