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

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