On 10/02/2011 06:34 PM, Alex Gaynor wrote:
There are a number of issues that are being conflated by this thread.
1) Should str += str be fast. In my opinion, the answer is an obvious and
resounding no. Strings are immutable, thus repeated string addition is
O(n**2). This is a natural and obvious conclusion. Attempts to change this
are only truly possible on CPython, and thus create a worse enviroment for
other Pythons, as well as a quite misleading, as they'll be extremely
brittle. It's worth noting that, to my knowledge, JVMs haven't attempted
hacks like this.
CPython is already misleading and ahead of JVM, because the str += str
optimization has been applied to Python 2 some years ago - see
http://hg.python.org/cpython-fullhistory/rev/fb6ffd290cfb?revcount=480
I like Python's immutable strings and consider it a good default for
strings. Nevertheless a mutable string would be useful for those
situations when you know you are about to manipulate a string-like
object a number of times, where immutable strings require too many
allocations.
I don't think Python needs a StringBuilder - constructing strings using
a list of strings or StringIO is well-known and easy. Mutable strings
are useful for the cases where StringBuilder doesn't suffice because you
need modifications other than appends. This is analogous to file writes
- in practice most of them are appends, but sometimes you also need to
be able to seek and write stuff in the middle.
Hrvoje
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe:
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com