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

Carl Friedrich Bolz cfbolz at gmx.de
Fri Sep 29 14:55:05 CEST 2006


Carl Friedrich Bolz wrote:
> 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 "+".

Sorry for the multiple post :-(




More information about the Python-list mailing list