Wed May 4 11:25:34 2016

Server Performance Benchmark Report

Below are the results of testing network server implementations. Each server is constrained to run in a single process. Test environment: Linux 4.4.5 (Ubuntu 16.04, x86_64) on Intel(R) Xeon(R) CPU E5-1620 v2 @ 3.70GHz.

Results

Detailed Benchmark Data

tcpecho
1.0KiB, c 10 10.0KiB, c 10 100.0KiB, c 10
gevent
Requests/sec30540.3 27579.33 13456.87
Transfer/sec29.82MiB 269.33MiB 1314.15MiB
Min latency0.05ms 0.06ms 0.12ms
Mean latency0.319ms 0.353ms 0.733ms
Max latency13.1ms 8.96ms 16.21ms
Latency variation0.029ms (9.1%) 0.035ms (9.98%) 0.057ms (7.78%)
tornado
Requests/sec19862.53 18579.77 6806.3
Transfer/sec19.4MiB 181.44MiB 664.68MiB
Min latency0.13ms 0.11ms 0.49ms
Mean latency0.495ms 0.528ms 1.459ms
Max latency15.12ms 20.32ms 15.36ms
Latency variation0.151ms (30.51%) 0.165ms (31.32%) 0.151ms (10.34%)
twisted
Requests/sec23681.5 21218.6 11616.9
Transfer/sec23.13MiB 207.21MiB 1134.46MiB
Min latency0.17ms 0.11ms 0.26ms
Mean latency0.414ms 0.462ms 0.851ms
Max latency16.98ms 12.92ms 20.09ms
Latency variation0.07ms (16.99%) 0.086ms (18.71%) 0.171ms (20.08%)
curio
Requests/sec25143.43 23227.27 14639.9
Transfer/sec24.55MiB 226.83MiB 1429.68MiB
Min latency0.03ms 0.04ms 0.1ms
Mean latency0.39ms 0.422ms 0.674ms
Max latency22.52ms 14.55ms 17.44ms
Latency variation0.055ms (14.22%) 0.033ms (7.81%) 0.056ms (8.39%)
curio streams
Requests/sec19152.4 17836.83 11129.03
Transfer/sec18.7MiB 174.19MiB 1086.82MiB
Min latency0.03ms 0.04ms 0.09ms
Mean latency0.514ms 0.551ms 0.889ms
Max latency25.95ms 14.38ms 32.5ms
Latency variation0.057ms (11.02%) 0.028ms (5.04%) 0.079ms (8.84%)
nodejs
Requests/sec44055.13 36515.53 11460.23
Transfer/sec43.02MiB 356.6MiB 1119.16MiB
Min latency0.04ms 0.04ms 0.15ms
Mean latency0.218ms 0.264ms 0.863ms
Max latency12.69ms 12.69ms 13.48ms
Latency variation0.078ms (35.89%) 0.215ms (81.31%) 0.383ms (44.4%)
golang
Requests/sec103263.87 84197.53 28327.6
Transfer/sec100.84MiB 822.24MiB 2766.37MiB
Min latency0.02ms 0.03ms 0.06ms
Mean latency0.086ms 0.107ms 0.343ms
Max latency18.39ms 16.58ms 13.65ms
Latency variation0.065ms (76.28%) 0.09ms (84.54%) 0.165ms (48.1%)
asyncio
Requests/sec41419.8 34147.07 12636.63
Transfer/sec40.45MiB 333.47MiB 1234.05MiB
Min latency0.08ms 0.07ms 0.26ms
Mean latency0.232ms 0.283ms 0.781ms
Max latency23.93ms 17.87ms 25.47ms
Latency variation0.077ms (33.39%) 0.101ms (35.63%) 0.237ms (30.29%)
asyncio streams
Requests/sec17729.0 14363.07 8923.0
Transfer/sec17.31MiB 140.26MiB 871.39MiB
Min latency0.13ms 0.1ms 0.37ms
Mean latency0.554ms 0.685ms 1.111ms
Max latency13.02ms 14.35ms 13.3ms
Latency variation0.037ms (6.76%) 0.062ms (9.0%) 0.135ms (12.18%)
uvloop
Requests/sec105458.6 82824.93 23495.23
Transfer/sec102.99MiB 808.84MiB 2294.46MiB
Min latency0.02ms 0.03ms 0.11ms
Mean latency0.083ms 0.109ms 0.415ms
Max latency16.25ms 16.9ms 32.59ms
Latency variation0.063ms (76.17%) 0.112ms (102.78%) 0.155ms (37.36%)
uvloop streams
Requests/sec31930.27 28251.03 11155.1
Transfer/sec31.18MiB 275.89MiB 1089.37MiB
Min latency0.06ms 0.07ms 0.49ms
Mean latency0.306ms 0.345ms 0.886ms
Max latency11.44ms 19.65ms 16.52ms
Latency variation0.091ms (29.9%) 0.113ms (32.84%) 0.263ms (29.68%)