• Stars
    star
    169
  • Rank 223,150 (Top 5 %)
  • Language
    C++
  • Created about 13 years ago
  • Updated almost 9 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

echo servers in many languages

Echo servers in some languages

ใ„ใ‚ใ‚“ใช่จ€่ชž๏ผ‹ใƒ•ใƒฌใƒผใƒ ใƒฏใƒผใ‚ฏใง echo server ใ‚’ๆ›ธใ„ใฆใฟใพใ—ใŸใ€‚

ใ„ใใคใ‹ใฎใ‚ณใƒผใƒ‰ใฏใ‚ตใƒณใƒ—ใƒซใƒ—ใƒญใ‚ฐใƒฉใƒ ใซใ‚ใฃใŸใใฎใพใพใฎใ‚ณใƒผใƒ‰ใ‚’ๆ›ธใ„ใฆใ„ใฆใ€ epoll, thread ็‰ˆใฏ่‡ชๅˆ†ใงไฝœๆˆใ—ใŸใ‚‚ใฎใงใ™ใ€‚

ๅ„ echo server ใฎๅฎŸ่ฃ…ใฏๅ…จใๅŒใ˜ใ‚‚ใฎใงใฏใชใ„ใฎใงใ‚ใใพใงใ‚‚ๅ‚่€ƒใงใ™ใŒใ€ ใƒ‘ใƒ•ใ‚ฉใƒผใƒžใƒณใ‚นใฏใ“ใ‚“ใชใ‹ใ‚“ใ˜ใงใ™ใ€‚

test environment

client and server are connected by Gigabit Ethernet.

client (sag14)

Debian 5.0.4 (i386) Linux sag14 2.6.26.5 #2 SMP Mon Sep 29 14:17:40 JST 2008 i686 GNU/Linux Intel(R) Core(TM)2 CPU 6300 @ 1.86GHz (dual)

server (sag15)

Debian 6.0.2 (amd64) Linux sag15 2.6.32-5-amd64 #1 SMP Mon Mar 7 21:35:22 UTC 2011 x86_64 GNU/Linux Intel(R) Core(TM)2 CPU 6300 @ 1.86GHz (dual)

test command

bench.sh does kick client 3 times with following option.

./client -c50 -o2 -h10000 sag15

C++ epoll

server:

./server_epoll

result:

Throughput: 117036.86 [#/sec]
Throughput: 118702.63 [#/sec]
Throughput: 119129.38 [#/sec]

with forking.

server:

./server_epoll -f2

result:

Throughput: 146602.29 [#/sec]
Throughput: 132542.38 [#/sec]
Throughput: 149737.19 [#/sec]

C++ thread

server:

./server_thread -c120

result:

Throughput: 122903.04 [#/sec]
Throughput: 121306.08 [#/sec]
Throughput: 122511.62 [#/sec]

C++ libev

server:

./server_libev

result:

$ sh bench.sh
Throughput: 96757.33 [#/sec]
Throughput: 132618.52 [#/sec]
Throughput: 132365.60 [#/sec]
$ sh bench.sh
Throughput: 134189.84 [#/sec]
Throughput: 133924.71 [#/sec]
Throughput: 133706.54 [#/sec]

libev have dynamic event queue size. So, first benchmark is slower than after.

Haskell

GHC 7.0.3

server:

./server_haskell

result:

Throughput: 80391.53 [#/sec]
Throughput: 82943.94 [#/sec]
Throughput: 76325.74 [#/sec]

Erlang

server:

$ erl
Erlang R14A (erts-5.8) [source] [64-bit] [smp:2:2] [rq:2] [async-threads:0] [hipe] [kernel-poll:false]
Eshell V5.8  (abort with ^G)
1> c(server_erlang, [native, {hipe, ['O3']}]).
{ok,server_erlang}
2> server_erlang:listen(5000).

result:

Throughput: 61698.85 [#/sec]
Throughput: 73994.04 [#/sec]
Throughput: 72668.51 [#/sec]

Go (r59)

server:

$ ./server_go

result:

Throughput: 43505.17 [#/sec]
Throughput: 43346.11 [#/sec]
Throughput: 43198.26 [#/sec]

server:

$ GOMAXPROCS=3 ./server_go

result:

Throughput: 52087.16 [#/sec]
Throughput: 52070.02 [#/sec]
Throughput: 52068.27 [#/sec]

Go (1)

server:

$ ./server_go

result:

Throughput: 41161.18 [#/sec]
Throughput: 44335.79 [#/sec]
Throughput: 44368.17 [#/sec]

server:

$ GOMAXPROCS=3 ./server_go

result:

Throughput: 55872.09 [#/sec]
Throughput: 55857.82 [#/sec]
Throughput: 55949.57 [#/sec]

pypy 1.6 + Tornado 2.0

server:

~/pypy-1.6/bin/pypy server_tornado.py

result:

Throughput: 79193.30 [#/sec]
Throughput: 81063.83 [#/sec]
Throughput: 81442.70 [#/sec]

pypy 1.8 + Tornado 2.2

server:

~/pypy-1.8/bin/pypy server_tornado.py

result:

Throughput: 84852.55 [#/sec]
Throughput: 106760.88 [#/sec]
Throughput: 107032.43 [#/sec]

pypy 1.6 + twisted

server:

~/pypy-1.6/bin/pypy server_twisted.py

result:

Throughput: 37630.81 [#/sec]
Throughput: 49274.60 [#/sec]
Throughput: 41053.66 [#/sec]

node.js 0.5.4

server:

~/local/node-0.5.4/bin/node server_node.js

result:

Throughput: 34713.88 [#/sec]
Throughput: 35965.09 [#/sec]
Throughput: 36288.78 [#/sec]

Ruby 1.9.1 + EventMachine 0.12.10

server:

$ ruby1.9.1 server_em.rb

result:

Throughput: 74124.61 [#/sec]
Throughput: 73578.20 [#/sec]
Throughput: 75241.61 [#/sec]

Ruby 1.9.1 + rev 0.3.2

server:

$ ruby1.9.1 server_rev.rb

result:

Throughput: 32372.56 [#/sec]
Throughput: 32647.37 [#/sec]
Throughput: 32517.97 [#/sec]

Python 2.7.2 + Tornado

server:

~/python2.7/bin/python server_tornado.py

result:

Throughput: 59626.30 [#/sec]
Throughput: 50793.45 [#/sec]
Throughput: 51566.35 [#/sec]

Python 2.7.2 + gevent

server:

~/python2.7/bin/python server_gevent.py

result for gevent 0.13.6:

Throughput: 17751.24 [#/sec]
Throughput: 17607.05 [#/sec]
Throughput: 17537.34 [#/sec]

result for gevent 1.0a2:

Throughput: 19433.81 [#/sec]
Throughput: 19455.66 [#/sec]
Throughput: 19371.97 [#/sec]

gevent-1.0a2 without greenlet. Event driven fashion:

~/python2.7/bin/python server_gevent_loop.py

result:

Throughput: 62942.07 [#/sec]
Throughput: 63338.58 [#/sec]
Throughput: 62814.45 [#/sec]

Python 2.7.2 + Twisted

server:

~/python2.7/bin/python server_twidted.py

result:

Throughput: 14339.96 [#/sec]
Throughput: 13982.39 [#/sec]
Throughput: 13841.22 [#/sec]

More Repositories