PATCH: Speed up direct string concatenation by 20+%!

John Machin sjmachin at lexicon.net
Tue Oct 3 02:02:56 EDT 2006


Larry Hastings wrote:

>
> John Machin wrote:
> > try benchmarking this ... well "style" may not be the appropriate word
>
> Running this under Python 2.5 release:
>     x = []
>     xappend = x.append
>     for i in xrange(10000000):
>         xappend("a")
>     y = "".join(x)
> took 3281ms.
>
> Running this under my patched Python 2.5:
>     x = ""
>     xappend = x.__add__
>     for i in xrange(10000000):
>         xappend("a")
>     y = "".join(x)

Don't you mean y = x[1] or something like that? y = "".join(x) looks
like a copy-paste error.

Playing the devil's advocate here: 10M adds each of a single byte
followed by 1 render doesn't seem very typical. How about 10 adds each
of 10 bytes followed by a render, then repeat that 10 M times.

Another question:
How does this:
  buff = ""
  for datum in data:
     if buff:
          buff += "|"
     buff += str(datum)
compare with
  buff = "|".join(str(datum) for datum in data)
?

Some of us have Windows boxes and don't have the necessary MS compiler.
Is there any chance of someone making a 2.5+patch Windows binary?

Cheers,
John


> took 3343ms.
> 
> 
> /larry/




More information about the Python-list mailing list