Python speed-up

Raymond Hettinger vze4rx4y at
Thu Sep 23 08:12:12 CEST 2004

[Skip Montanaro]
> >  in 2.4 common case string concatenation gets a big speed boost:
> >
> >     % python2.3 ~/local/bin/  -s 's=""' "s+='foo'"
> >     10000 loops, best of 3: 68.3 usec per loop
> >     % python2.4 ~/local/bin/  -s 's=""' "s+='foo'"
> >     1000000 loops, best of 3: 0.855 usec per loop

> Ah. Am I correct to conclude that StringIO should either be rewritten
> concatenating strings, or be deprecated, or both?

Nope.  StringIO correctly makes heavy use of the ''.join() idiom which is still
preferred += for reasons of portability and speed.  The purpose of the +=
optimization was to make it less catastrophic in places where it does occur.
Guido was clear that ''.join() remains king.

I will submit a patch to tighten up the code in StringIO.write() which needs
localized variables and elimination of an unnecessary step.

Raymond Hettinger

More information about the Python-list mailing list