I compared some of the framworks on TodoBackend project with some tweaks.
All these are backed by postgres
. So obviously these benchmarks are not purely for the framework itself but the whole stack.
https://github.com/jeffweiss/todobackend-phoenix
wrk -t20 -c100 -d30S --timeout 2000 "http://localhost:3000/api/todos"
Running 30s test @ http://localhost:3000/api/todos
20 threads and 100 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 23.76ms 3.25ms 114.35ms 96.11%
Req/Sec 212.01 16.17 252.00 80.19%
126864 requests in 30.09s, 82.27MB read
Requests/sec: 4216.04
Transfer/sec: 2.73MB
https://github.com/moredip/todo-backend-sinatra
- removed the logging
wrk -t20 -c100 -d30S --timeout 2000 "http://localhost:3000/todos"
Running 30s test @ http://localhost:3000/todos
20 threads and 100 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 13.63ms 11.83ms 173.18ms 88.35%
Req/Sec 324.15 119.35 690.00 70.84%
106624 requests in 30.10s, 93.75MB read
Requests/sec: 3542.85
Transfer/sec: 3.12MB
https://github.com/dtao/todo-backend-express
Non Cluster mode
wrk -t20 -c100 -d30S --timeout 2000 "http://localhost:3000/"
Running 30s test @ http://localhost:3000/
20 threads and 100 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 81.96ms 97.83ms 498.72ms 79.26%
Req/Sec 144.97 93.23 540.00 63.28%
81397 requests in 30.10s, 44.48MB read
Requests/sec: 2704.28
Transfer/sec: 1.48MB
Cluster mode
- added cluster mode
wrk -t20 -c100 -d30S --timeout 2000 "http://localhost:3000/"
Running 30s test @ http://localhost:3000/
20 threads and 100 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 21.58ms 20.51ms 408.22ms 90.05%
Req/Sec 273.38 58.89 550.00 73.69%
163169 requests in 30.07s, 89.16MB read
Requests/sec: 5425.57
Transfer/sec: 2.96MB
https://github.com/whitfieldc/maru_todo
wrk -t20 -c100 -d30S --timeout 2000 "http://localhost:3000/tasks"
Running 30s test @ http://localhost:3000/tasks
20 threads and 100 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 21.77ms 5.43ms 143.73ms 95.62%
Req/Sec 232.93 23.00 272.00 88.08%
139189 requests in 30.07s, 68.25MB read
Requests/sec: 4628.15
Transfer/sec: 2.27MB
https://github.com/hammerdr/todo-backend-rails
wrk -t20 -c100 -d30S --timeout 2000 "http://localhost:3000"
Running 30s test @ http://localhost:3000
20 threads and 100 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 61.33ms 16.54ms 247.46ms 76.96%
Req/Sec 60.09 32.24 141.00 60.18%
26936 requests in 30.08s, 24.30MB read
Requests/sec: 895.37
Transfer/sec: 827.20KB
wrk -t20 -c100 -d30S --timeout 2000 "http://localhost:3000"
Running 30s test @ http://localhost:3000
20 threads and 100 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 41.48ms 27.82ms 417.76ms 65.79%
Req/Sec 90.61 63.23 280.00 63.91%
29777 requests in 30.10s, 26.16MB read
Requests/sec: 989.23
Transfer/sec: 0.87MB