socket send O(N**2) complexity
Steven D'Aprano
steven at REMOVE.THIS.cybersource.com.au
Tue Sep 22 23:01:51 EDT 2009
On 2009年9月23日 00:25:52 +0100, Nobody wrote:
> On 2009年9月21日 16:33:08 -0400, Jack Diederich wrote:
>>>> AIUI, as a python string is imutable, a slice of a string is a new
>>> string which points (C char *) to the start of the slice data and with
>>> a length that is the length of the slice, about 8 bytes on 32 bit
>>> machine.
>>>> Not in CPython. While some special strings are re-used (empty string,
>> single letters) if you take a slice of an existing string a new buffer
>> is allocated and the slice memcpy'd into it.
>> Er, why?
>> I can understand doing this for mutable sequences, but it doesn't seem
> to make much sense for strings.
Consider:
huge_string = "abcdef"*1000*1000*1000
tiny_string = huge_string[42:45]
del huge_string
Under the current behaviour, huge_string will be garbage collected. With
the proposed string-view, it won't be. It would be surprising and
disturbing if taking a tiny slice of a huge string prohibited the huge
string from being garbage collected.
--
Steven
More information about the Python-list
mailing list