Scatter/gather on sockets?

Paul Rubin http
Sat Apr 1 17:55:09 EST 2006


Roy Smith <roy at panix.com> writes:
> This is true, but I'm generating the message being sent in very small 
> chunks (often as small as 4 bytes at a time), and typically need to flush a 
> packet out onto the network after a few dozen bytes.  Maybe at most a few 
> hundred.  I don't know of any networks with MTU's smaller than that.  
> Measurements show a 10-fold improvement in protocol throughput with large 
> packets vs. small ones.  The only question is what's the most efficient way 
> in Python to generate the large packets.

Probably: build up the packet with cStringIO or with the array module
instead of as a list of small strings.  But if you time both versions
I don't think it'll matter much.  Python (at least CPython) simply
will not be very fast no matter what you do.  The overhead of building
a large string (with ''.join, say) from a bunch of small ones isn't
that big a deal compared with what you already lose in interpreter
overhead running the application.



More information about the Python-list mailing list