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

cfbolz at googlemail.com cfbolz at googlemail.com
Fri Sep 29 08:41:21 EDT 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 (at least if you don't do additional things).

> 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 Bolz




More information about the Python-list mailing list