Network performance

Richie Hindle richie at entrian.com
Tue Aug 23 12:12:20 CEST 2005


[Roland]
> The client sends a number of lines (each ending with \n) and ends one  
> set of lines with a empty line.
> [...]
> I was surprised to find that the performance was [poor].

Are you sending all the lines in a single packet:

>>> sock.send('\n'.join(lines))

or sending them one at a time:

>>> for line in lines:
>>>   sock.send(line + '\n')

?  If the latter, you are probably experiencing "Nagle delays".  Google
will furnish you with any number of explanations of what that means, but
in summary, one end of a TCP/IP connection should never send two
consecutive small packets without receiving a packet from the other end.
('Small' typically means less than about 1400 bytes.)  Each time you do
that, you'll suffer an artificial delay introduced by TCP/IP itself.

-- 
Richie Hindle 
richie at entrian.com



More information about the Python-list mailing list