Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
misc
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
misc
Commits
5a0ab492
Commit
5a0ab492
authored
Apr 29, 2016
by
Yury Selivanov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Set TCP_NODELAY in all echo server benchmarks (go sets it by default)
parent
ab27debb
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
36 additions
and
2 deletions
+36
-2
servers/asyncioecho.py
servers/asyncioecho.py
+15
-1
servers/curioecho.py
servers/curioecho.py
+6
-0
servers/curioecho_streams.py
servers/curioecho_streams.py
+5
-1
servers/gevecho.py
servers/gevecho.py
+5
-0
servers/nodeecho.js
servers/nodeecho.js
+1
-0
servers/torecho.py
servers/torecho.py
+1
-0
servers/twistedecho.py
servers/twistedecho.py
+3
-0
No files found.
servers/asyncioecho.py
View file @
5a0ab492
...
...
@@ -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
...
...
servers/curioecho.py
View file @
5a0ab492
...
...
@@ -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
:
...
...
servers/curioecho_streams.py
View file @
5a0ab492
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
:
...
...
servers/gevecho.py
View file @
5a0ab492
# 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
:
...
...
servers/nodeecho.js
View file @
5a0ab492
...
...
@@ -5,6 +5,7 @@
var
net
=
require
(
'
net
'
);
net
.
createServer
(
function
(
socket
){
socket
.
setNoDelay
();
socket
.
on
(
'
data
'
,
function
(
data
){
socket
.
write
(
data
)
});
...
...
servers/torecho.py
View file @
5a0ab492
...
...
@@ -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
):
...
...
servers/twistedecho.py
View file @
5a0ab492
...
...
@@ -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
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment