[Twisted-Python] transport.write performance.

Laurens Van Houtven _ at lvh.io
Tue Jul 30 05:09:33 MDT 2013


Hi zipxing,

You don't mention the interpreter. Is it CPython? What kind of results do
you get trying it on PyPy?

Also, you don't need to specify epollreactor. Recent versions of twisted
will automagically choose the appropriate backend. I fixed this and some
other cleanups and got:

----
from time import clock
from twisted.internet import protocol, reactor
from twisted.protocols import basic

class MeasuringEchoProtocol(basic.LineReceiver):
    MEASUREMENT_INTERVAL = 1000

    def lineReceived(self, data):
        self.factory.requests += 1
        if self.factory.requests % self.MEASUREMENT_INTERVAL == 0:
            print "RPS: {0}".format(self.factory.requests / clock())

        self.transport.write(data)



class ServerFactory(protocol.ServerFactory):
    protocol = MeasuringEchoProtocol

    def __init__(self):
        self.requests = 0



def main():
    reactor.listenTCP(9976, ServerFactory())
    clock()
    reactor.run()

if __name__ == '__main__':
    main()
----

Keep in mind that due to setup time few requests get handled right when it
starts, so the server RPS will take some time to balance out. On my wimpy
laptop on battery power, that was around 420.274404782.

cheers
lvh
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://twistedmatrix.com/pipermail/twisted-python/attachments/20130730/92a407f0/attachment.html>


More information about the Twisted-Python mailing list