# [Python-Dev] Socket timeout patch

**Tim Peters
**
tim.one@comcast.net

*Mon, 03 Jun 2002 13:32:27 -0400*

[Guido]
>>>* - Maybe changing the write buffer to a list makes sense too?
*
[mgilfix@eecs.tufts.edu]
>>* I could do this. Then just do a join before the flush. Is the append
*>>* /that/ much faster?
*
[Guido]
>* Depends on how small the chunks are you write. Roughly, repeated list
*>* append is O(N log N), while repeated string append is O(N**2).
*
Repeated list append is O(N) amortized (a single append may take O(N) time
all by itself, but if you do N of them in a row the time is still no worse
than O(N) overall; a possible conceptual difficulty may arise here because
the value of "N" changes over time, and while growing to a total of size N
may require O(log N) whole-list copies, each of the copies involves far
fewer elements than the final value of N -- if you add up all these smaller
values of N in the worst case, the sum is O(N) wrt the final value of N, and
so it's worst-case O(N) overall wrt the final value of N).