Slow network reading?

Ivan Voras ivoras at __yahoo__.com_
Fri May 12 18:53:32 EDT 2006


Andrew MacIntyre wrote:

> Comparative CPU & memory utilisation statistics, not to mention platform 
> and version of Python, would be useful hints...

During benchmarking, all versions cause all CPU to be used, but Python 
version has ~1.5x more CPU time allocated to it than PHP. Python is 2.4.1

> Note that the file-like object returned by makefile() has significant
> portions of heavy lifting code in Python rather than C which can be a
> drag on ultimate performance...  If on a Unix platform, it may be worth
> experimenting with os.fdopen() on the socket's fileno() to see whether
> the core Python file object (implemented in C) can be used in place of
> the lookalike returned from the makefile method.

That's only because I need the .readline() function. In C, I'm using 
fgets() (with the expectation that iostream will buffer data).

> Even without that, you are specifying a buffer size smaller than the
> default (8k - see Lib/socket.py). 16k might be even better.

The benchmark is such that all of data is < 200 bytes. I estimate that 
in production almost all protocol data will be < 4KB.

> Although they're only micro-optimisations, I'd be interested in the
> relative performance of the query method re-written as:

The change (for the better) is minor (3-5%).



More information about the Python-list mailing list