[Python-Dev] PEP 0008 confusion - here it is, but don't use it?

Raymond Hettinger python at rcn.com
Fri Aug 6 09:32:21 CEST 2004


> I'm a bit confused.  Why bother to speed up s+=t if we aren't supposed
to
> use it?

In fact, it is does occur all over the place (esp. in newbie code) so it
ought to run as fast as possible or least not be a total disaster.

OTOH, library code gets run on various implementations of Python and it
would be a mistake to change any library code from ''.join() and have it
start performing badly on other implementations.  That was essentially
the only argument against the patch which is otherwise a pure win.

On a side note, the += optimization only works if there is space
(fragmentationwise, not total memory) to resize a string in-place.
While this is usually true, ''.join() always runs in linear time.  Also,
''.join() doesn't run through the eval-loop.  IOW, notwithstanding
cross-implementation performance, ''.join() is usually a better choice
in performance sensitive code.

The goal of the patch is not to change coding styles.  Rather, the goal
is to have it hurt less when you coded += anyways.



Raymond



More information about the Python-Dev mailing list