136 lines
No EOL
3.5 KiB
Python
136 lines
No EOL
3.5 KiB
Python
import time, socket, msgpack
|
|
from cStringIO import StringIO
|
|
|
|
print "Connecting..."
|
|
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
|
sock.connect(("localhost", 1234))
|
|
|
|
|
|
print "1 Threaded: Send, receive 10000 ping request...",
|
|
s = time.time()
|
|
for i in range(10000):
|
|
sock.sendall(msgpack.packb({"cmd": "Ping"}))
|
|
req = sock.recv(16*1024)
|
|
print time.time()-s, repr(req), time.time()-s
|
|
|
|
|
|
print "1 Threaded: Send, receive, decode 10000 ping request...",
|
|
s = time.time()
|
|
unpacker = msgpack.Unpacker()
|
|
reqs = 0
|
|
for i in range(10000):
|
|
sock.sendall(msgpack.packb({"cmd": "Ping"}))
|
|
unpacker.feed(sock.recv(16*1024))
|
|
for req in unpacker:
|
|
reqs += 1
|
|
print "Found:", req, "x", reqs, time.time()-s
|
|
|
|
|
|
print "1 Threaded: Send, receive, decode, reconnect 1000 ping request...",
|
|
s = time.time()
|
|
unpacker = msgpack.Unpacker()
|
|
reqs = 0
|
|
for i in range(1000):
|
|
sock.sendall(msgpack.packb({"cmd": "Ping"}))
|
|
unpacker.feed(sock.recv(16*1024))
|
|
for req in unpacker:
|
|
reqs += 1
|
|
sock.close()
|
|
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
|
sock.connect(("localhost", 1234))
|
|
print "Found:", req, "x", reqs, time.time()-s
|
|
|
|
|
|
print "1 Threaded: Request, receive, decode 10000 x 10k data request...",
|
|
s = time.time()
|
|
unpacker = msgpack.Unpacker()
|
|
reqs = 0
|
|
for i in range(10000):
|
|
sock.sendall(msgpack.packb({"cmd": "Bigdata"}))
|
|
|
|
"""buff = StringIO()
|
|
data = sock.recv(16*1024)
|
|
buff.write(data)
|
|
if not data:
|
|
break
|
|
while not data.endswith("\n"):
|
|
data = sock.recv(16*1024)
|
|
if not data: break
|
|
buff.write(data)
|
|
req = msgpack.unpackb(buff.getvalue().strip("\n"))
|
|
reqs += 1"""
|
|
|
|
req_found = False
|
|
while not req_found:
|
|
buff = sock.recv(16*1024)
|
|
unpacker.feed(buff)
|
|
for req in unpacker:
|
|
reqs += 1
|
|
req_found = True
|
|
break # Only process one request
|
|
print "Found:", len(req["res"]), "x", reqs, time.time()-s
|
|
|
|
|
|
print "10 Threaded: Request, receive, decode 10000 x 10k data request...",
|
|
import gevent
|
|
s = time.time()
|
|
reqs = 0
|
|
req = None
|
|
def requester():
|
|
global reqs, req
|
|
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
|
sock.connect(("localhost", 1234))
|
|
unpacker = msgpack.Unpacker()
|
|
for i in range(1000):
|
|
sock.sendall(msgpack.packb({"cmd": "Bigdata"}))
|
|
|
|
req_found = False
|
|
while not req_found:
|
|
buff = sock.recv(16*1024)
|
|
unpacker.feed(buff)
|
|
for req in unpacker:
|
|
reqs += 1
|
|
req_found = True
|
|
break # Only process one request
|
|
|
|
threads = []
|
|
for i in range(10):
|
|
threads.append(gevent.spawn(requester))
|
|
gevent.joinall(threads)
|
|
print "Found:", len(req["res"]), "x", reqs, time.time()-s
|
|
|
|
|
|
print "1 Threaded: ZeroMQ Send, receive 1000 ping request...",
|
|
s = time.time()
|
|
import zmq.green as zmq
|
|
c = zmq.Context()
|
|
zmq_sock = c.socket(zmq.REQ)
|
|
zmq_sock.connect('tcp://127.0.0.1:1234')
|
|
for i in range(1000):
|
|
zmq_sock.send(msgpack.packb({"cmd": "Ping"}))
|
|
req = zmq_sock.recv(16*1024)
|
|
print "Found:", req, time.time()-s
|
|
|
|
|
|
print "1 Threaded: ZeroMQ Send, receive 1000 x 10k data request...",
|
|
s = time.time()
|
|
import zmq.green as zmq
|
|
c = zmq.Context()
|
|
zmq_sock = c.socket(zmq.REQ)
|
|
zmq_sock.connect('tcp://127.0.0.1:1234')
|
|
for i in range(1000):
|
|
zmq_sock.send(msgpack.packb({"cmd": "Bigdata"}))
|
|
req = msgpack.unpackb(zmq_sock.recv(1024*1024))
|
|
print "Found:", len(req["res"]), time.time()-s
|
|
|
|
|
|
print "1 Threaded: direct ZeroMQ Send, receive 1000 x 10k data request...",
|
|
s = time.time()
|
|
import zmq.green as zmq
|
|
c = zmq.Context()
|
|
zmq_sock = c.socket(zmq.REQ)
|
|
zmq_sock.connect('tcp://127.0.0.1:1233')
|
|
for i in range(1000):
|
|
zmq_sock.send(msgpack.packb({"cmd": "Bigdata"}))
|
|
req = msgpack.unpackb(zmq_sock.recv(1024*1024))
|
|
print "Found:", len(req["res"]), time.time()-s |