The Running Time of += on Char Strings ?
Daniel Dittmar
daniel.dittmar at sap.corp
Thu Mar 24 05:15:57 EST 2005
Edg Bamyasi wrote:
> What is the running time of conactination on character strings.
>
> i.e.
>
>
>>>joe="123"
>>>joe+="99999999999999999"
>
>
> is it Amortized Constant time? I don't think it would be O((number of
> chars)^2) but i really don't know.
Strings are immutable, so
joe+="99999999999999999"
is executed as
joe = joe + "99999999999999999"
This means that there is
- one allocation
- two memcpy
- one deallocation (old value of joe)
My guess is that the allocations play a rather large part in the actual
timing.
Creating a large string by multiple concatenations is slow, instead you
should:
- use module cStringIO
- or add all the strings to a list and do "".join (listvariable)
How are you supposed to know? It's mostly Python folklore, some of which
has been written down in the Python Cookbook
(http://aspn.activestate.com/ASPN/Python/Cookbook/)
Daniel
More information about the Python-list
mailing list