These results are invalid. Some of the server implementations don't parse correctly and rust-tokio/ponylang-tcp don't seem to parse at all. See here for better benchmarks: https://gist.github.com/kprotty/5a41e9612657de00788478a7dde43d78
====
wrk -t4 -c128 -d10 --latency http://localhost:12345
-
Machine:
- Intel Core i7-6700k (4 cores, 8 threads, 4.2ghz)
- 16GB DDR4 2400mhz RAM
- Arch Linux, Kernel 5.2.8
-
C non-blocking (https://pastebin.com/VHMmjFhy)
Running 10s test @ http://localhost:12345
4 threads and 128 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 6.03us 66.97us 6.76ms 99.96%
Req/Sec 456.66k 49.47k 705.49k 88.00%
Latency Distribution
50% 5.00us
75% 5.00us
90% 6.00us
99% 9.00us
4533700 requests in 10.06s, 216.18MB read
Requests/sec: 450520.28
Transfer/sec: 21.48MB
- C multi-threaded (https://pastebin.com/B6LGaTRq)
Running 10s test @ http://localhost:12345
4 threads and 128 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 71.70ms 53.40ms 320.61ms 62.03%
Req/Sec 794.31k 172.83k 1.93M 76.13%
Latency Distribution
50% 63.31ms
75% 109.61ms
90% 151.26ms
99% 196.52ms
31478929 requests in 10.07s, 1.47GB read
Requests/sec: 3126434.62
Transfer/sec: 149.08MB
- C non-blocking multi-threaded (EPOLLET) (https://pastebin.com/N55mku4G)
Running 10s test @ http://localhost:12345
4 threads and 128 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 4.77ms 20.30ms 384.52ms 98.24%
Req/Sec 0.99M 726.03k 4.18M 84.12%
Latency Distribution
50% 36.00us
75% 4.38ms
90% 12.04ms
99% 39.34ms
29999649 requests in 10.09s, 1.40GB read
Socket errors: connect 0, read 0, write 2, timeout 3
Requests/sec: 2971965.71
Transfer/sec: 141.71MB
- C non-blocking multi-threaded (EPOLLONESHOT) (https://pastebin.com/3jDZp8DC)
Running 10s test @ http://localhost:12345
4 threads and 128 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 14.63ms 102.86ms 1.38s 98.44%
Req/Sec 0.93M 418.25k 3.91M 82.83%
Latency Distribution
50% 22.00us
75% 3.73ms
90% 12.33ms
99% 567.99ms
28006935 requests in 10.09s, 1.30GB read
Socket errors: connect 0, read 4, write 2, timeout 4
Requests/sec: 2775978.13
Transfer/sec: 132.37MB
- Rust actix (https://pastebin.com/yTN4mp5c)
Running 10s test @ http://localhost:12345
4 threads and 128 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 719.41us 181.72us 9.35ms 94.70%
Req/Sec 44.72k 4.73k 58.48k 68.75%
Latency Distribution
50% 684.00us
75% 792.00us
90% 825.00us
99% 1.35ms
1779562 requests in 10.05s, 84.86MB read
Requests/sec: 177030.63
Transfer/sec: 8.44MB
- Rust actix-web (https://pastebin.com/p4GxGkJJ)
Running 10s test @ http://localhost:12345
4 threads and 128 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 1.09ms 2.58ms 30.16ms 91.00%
Req/Sec 118.84k 15.96k 140.87k 68.75%
Latency Distribution
50% 141.00us
75% 596.00us
90% 3.19ms
99% 13.36ms
4730269 requests in 10.04s, 577.43MB read
Requests/sec: 471160.26
Transfer/sec: 57.51MB
- Rust tokio (https://pastebin.com/byUBd8Wy)
Running 10s test @ http://localhost:12345
4 threads and 128 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 78.26ms 54.56ms 297.56ms 66.19%
Req/Sec 7.90M 219.58k 8.25M 90.77%
Latency Distribution
50% 70.14ms
75% 112.62ms
90% 156.40ms
99% 232.40ms
316801024 requests in 10.19s, 14.75GB read
Requests/sec: 31080970.08
Transfer/sec: 1.45GB
- Golang evio (https://pastebin.com/P04PEwYR)
Running 10s test @ http://localhost:12345
4 threads and 128 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 1.44ms 3.45ms 48.21ms 90.34%
Req/Sec 135.90k 5.86k 147.08k 77.00%
Latency Distribution
50% 159.00us
75% 557.00us
90% 4.72ms
99% 16.72ms
5408490 requests in 10.03s, 257.90MB read
Requests/sec: 538966.01
Transfer/sec: 25.70MB
- Elixir TCP (https://pastebin.com/eWSqBM5a)
Running 10s test @ http://localhost:12345
4 threads and 128 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 19.98ms 134.24ms 1.65s 97.35%
Req/Sec 146.14k 38.66k 243.66k 61.75%
Latency Distribution
50% 263.00us
75% 399.00us
90% 1.91ms
99% 779.09ms
5823156 requests in 10.06s, 277.67MB read
Socket errors: connect 0, read 0, write 0, timeout 12
Requests/sec: 579064.50
Transfer/sec: 27.61MB
- Ponylang TCP (https://pastebin.com/YCYQKtPM)
Running 10s test @ http://localhost:12345
4 threads and 128 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 40.45ms 28.17ms 165.03ms 65.67%
Req/Sec 7.78M 186.71k 8.19M 89.64%
Latency Distribution
50% 36.16ms
75% 58.49ms
90% 81.68ms
99% 118.68ms
309517082 requests in 10.07s, 14.41GB read
Requests/sec: 30732328.55
Transfer/sec: 1.43GB
@shirshak55 @courtier These results are invalid due as many of the implementations here don't even parse correctly. See this instead: https://gist.github.com/kprotty/5a41e9612657de00788478a7dde43d78