Commit 5a0ab492 authored by Yury Selivanov's avatar Yury Selivanov

Set TCP_NODELAY in all echo server benchmarks (go sets it by default)

parent ab27debb
......@@ -30,6 +30,11 @@ async def echo_server(loop, address, unix):
async def echo_client(loop, client):
try:
sock.setsockopt(IPPROTO_TCP, TCP_NODELAY, 1)
except (OSError, NameError):
pass
with client:
while True:
data = await loop.sock_recv(client, 102400)
......@@ -41,8 +46,12 @@ async def echo_client(loop, client):
async def echo_client_streams(reader, writer):
sock = writer.get_extra_info('socket')
try:
sock.setsockopt(IPPROTO_TCP, TCP_NODELAY, 1)
except (OSError, NameError):
pass
if PRINT:
sock = writer.get_extra_info('socket')
print('Connection from', sock.getpeername())
while True:
data = await reader.read(102400)
......@@ -57,6 +66,11 @@ async def echo_client_streams(reader, writer):
class EchoProtocol(asyncio.Protocol):
def connection_made(self, transport):
self.transport = transport
sock = transport.get_extra_info('socket')
try:
sock.setsockopt(IPPROTO_TCP, TCP_NODELAY, 1)
except (OSError, NameError):
pass
def connection_lost(self, exc):
self.transport = None
......
......@@ -3,10 +3,16 @@
# A simple echo server
from curio import Kernel, new_task, run_server
from socket import *
async def echo_handler(client, addr):
print('Connection from', addr)
try:
client.setsockopt(IPPROTO_TCP, TCP_NODELAY, 1)
except (OSError, NameError):
pass
while True:
data = await client.recv(102400)
if not data:
......
from curio import Kernel, new_task, run_server
from socket import *
async def echo_handler(client, addr):
print('Connection from', addr)
try:
client.setsockopt(IPPROTO_TCP, TCP_NODELAY, 1)
except (OSError, NameError):
pass
reader, writer = client.make_streams()
async with reader, writer:
while True:
......
# Taken from curio: https://github.com/dabeaz/curio
from gevent.server import StreamServer
from socket import *
# this handler will be run for each incoming connection in a dedicated greenlet
def echo(socket, address):
print('New connection from %s:%s' % address)
try:
socket.setsockopt(IPPROTO_TCP, TCP_NODELAY, 1)
except (OSError, NameError):
pass
while True:
data = socket.recv(100000)
if not data:
......
......@@ -5,6 +5,7 @@
var net = require('net');
net.createServer(function(socket){
socket.setNoDelay();
socket.on('data', function(data){
socket.write(data)
});
......
......@@ -5,6 +5,7 @@ from tornado.tcpserver import TCPServer
class StreamHandler:
def __init__(self, stream):
self._stream = stream
stream.set_nodelay(True)
self._stream.read_until_close(None, self._handle_read)
def _handle_read(self, data):
......
......@@ -8,6 +8,9 @@ from twisted.internet import reactor, protocol
class Echo(protocol.Protocol):
"""This is just about the simplest possible protocol"""
def connectionMade(self):
self.transport.setTcpNoDelay(True)
def dataReceived(self, data):
"As soon as any data is received, write it back."
self.transport.write(data)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment