[Python-Dev] RFC: Add a new builtin strarray type to Python? (original) (raw)
Hrvoje Niksic hrvoje.niksic at avl.com
Mon Oct 3 10:31:07 CEST 2011
- Previous message: [Python-Dev] RFC: Add a new builtin strarray type to Python?
- Next message: [Python-Dev] RFC: Add a new builtin strarray type to Python?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
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
- Previous message: [Python-Dev] RFC: Add a new builtin strarray type to Python?
- Next message: [Python-Dev] RFC: Add a new builtin strarray type to Python?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]