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

Carl Friedrich Bolz cfbolz at gmx.de
Fri Sep 29 14:33:12 CEST 2006


Robin Becker wrote:
> Larry Hastings wrote:
> ______
>> THE PATCH
>>
>> The core concept: adding two strings together no longer returns a pure
>> "string" object.  Instead, it returns a "string concatenation" object
>> which holds references to the two strings but does not actually
>> concatenate
>> them... yet.  The strings are concatenated only when someone requests
>> the
>> string's value, at which point it allocates all the space it needs and
>> renders the concatenated string all at once.
>>
>> More to the point, if you add multiple strings together (a + b + c),
>> it *doesn't* compute the intermediate strings (a + b).
>>
>> Upsides to this approach:
> ........
> 
> wouldn't this approach apply to other additions eg list+list seq+seq etc 
> etc.

no, I think it depends on strings being immutable. If you do list1 +
list2 that way and list1 is mutated then the resulting list would be
changed too.

> I suppose the utility of such an approach depends on the frequency with 
> which multiple strings/lists/sequences etc are added together in real code.

I think there are quite a lot of string additions around, it's just that
people get told to use join all the time, so they are not written using "+".

Cheers,

Carl Friedrich




More information about the Python-list mailing list