[Python-Dev] Optimized string concatenation (original) (raw)

Raymond Hettinger python at rcn.com
Tue Aug 3 04:24:03 CEST 2004


> * discussed on SF too is whether we should remove the 'a=a+b' > acceleration > from the patch, keeping only 'a+=b'; see the SF tracker.

Hmm... I couldn't think of any reason to limit the optimization to += until I actually went and read the comments in the SF tracker. What I took away from that discussion was that it's possible to optimize "a=a+b", but NOT possible to optimize "a=a+b+c". This is a subtle distinction that is harder to explain to people than simply saying "it only works with +=, not with +".

That's a fairly convincing point, so I guess I'm on the fence on this one.

I'm not. Skipping a=a+b breaks symmetry with a+=b. More importantly, skipping a=a+b misses most of the potential benefits (see sre_parse.py for an example). PyBench, ParrotBench, and my other benchmarks all show gains when a=a+b is done inplace.

The explanation is not hard. The CPython implementation can concatenate inplace two term expressions of the form a=a+b or a+=b. Expressions with more terms are not eligible for inplace concatenation.

Raymond



More information about the Python-Dev mailing list