[Python-Dev] PATCH submitted: Speed up + for string concatenation, now as fast as "".join(x) idiom

Josiah Carlson jcarlson at uci.edu
Thu Oct 5 22:05:09 CEST 2006


"Gregory P. Smith" <greg at electricrain.com> wrote:
> 
> > I've never liked the "".join([]) idiom for string concatenation; in my 
> > opinion it violates the principles "Beautiful is better than ugly." and 
> > "There should be one-- and preferably only one --obvious way to do it.". 
> > (And perhaps several others.)  To that end I've submitted patch #1569040 
> > to SourceForge:
> >     
> > http://sourceforge.net/tracker/index.php?func=detail&aid=1569040&group_id=5470&atid=305470
> > This patch speeds up using + for string concatenation.
> 
> yay!  i'm glad to see this.  i hate the "".join syntax.  i still write
> that as string.join() because thats at least readable).  it also fixes
> the python idiom for fast string concatenation as intended; anyone
> whos ever written code that builds a large string value by pushing
> substrings into a list only to call join later should agree.
> 
> mystr = "prefix"
> while bla:
>   #...
>   mystr += moredata

Regardless of "nicer to read", I would just point out that Guido has
stated that Python will not have strings implemented as trees.  Also,
Python 3.x will have a data type called 'bytes', which will be the
default return of file.read() (when files are opened as binary), which
uses an over-allocation strategy like lists to get relatively fast
concatenation (on the order of lst1 += lst2).

 - Josiah



More information about the Python-Dev mailing list