PATCH: Speed up direct string concatenation by 20+%!
Carl Friedrich Bolz
cfbolz at gmx.de
Fri Sep 29 08:34:17 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.
> 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