On 8 February 2016 at 09:07, Tres Seaver <tsea...@palladion.com> 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 | ncogh...@gmail.com | Brisbane, Australia _______________________________________________ Distutils-SIG maillist - Distutils-SIG@python.org https://mail.python.org/mailman/listinfo/distutils-sig