This project aims to be a load benchmarking suite, no more, no less
Measuring response times (routing times) for each framework (middleware).
Results are not production-ready yet
- Helping decide beetween languages, depending on use case
- Learning languages, best practices, devops culture ...
- Having fun ❤️
- Crystal as
built-intools are made in this language - Docker as frameworks are
isolatedinto containers
docker is used for development purpose, production results will be computed on DigitalOcean
- Install all dependencies
shards install- Build internal tools
shards build- Build containers
job is either a language (example : crystal) or a framework (example : router.cr)
bin/neph [job]- Start the benchmark ....
tools is a list of language / framework to challenge (example : ruby kemal amber go python)
bin/benchmarker [tools]Last update: 2018-07-05
OS: Linux (version: 4.16.11-100.fc26.x86_64, arch: x86_64)
CPU Cores: 8
- actix-web (rust)
- evhtp (cpp)
- fasthttprouter (go)
- vibora (python)
- mofuw (nim)
- act (java)
- iris (go)
- iron (rust)
- aspnetcore (csharp)
- rocket (rust)
- echo (go)
- gorilla-mux (go)
- polka (node)
- rayo (node)
- nickel (rust)
- fastify (node)
- akkahttp (scala)
- koa (node)
- perfect (swift)
- restify (node)
- vapor (swift)
- express (node)
- symfony (php)
- plug (elixir)
- roda (ruby)
- phoenix (elixir)
- laravel (php)
- kitura (swift)
- rack-routing (ruby)
- router.cr (crystal)
- spider-gazelle (crystal)
- gin (go)
- lucky (crystal)
- kemal (crystal)
- amber (crystal)
- flame (ruby)
- flask (python)
- hanami (ruby)
- sanic (python)
- sinatra (ruby)
- jester (nim)
- django (python)
- tornado (python)
- rails (ruby)
- rust (actix-web)
- cpp (evhtp)
- go (fasthttprouter)
- python (vibora)
- nim (mofuw)
- java (act)
- csharp (aspnetcore)
- node (polka)
- scala (akkahttp)
- swift (perfect)
- php (symfony)
- elixir (plug)
- ruby (roda)
- crystal (router.cr)
| Language (Runtime) | Framework (Middleware) | Requests / s | Latency | 99 percentile | Throughput |
|---|---|---|---|---|---|
| ruby | rails | 4929.00 | 26016.67 | 158555.33 | 4.52 MB |
| ruby | sinatra | 16960.67 | 7519.67 | 42064.67 | 14.24 MB |
| ruby | roda | 47429.00 | 2646.00 | 12115.00 | 14.64 MB |
| ruby | rack-routing | 35453.00 | 3694.67 | 28968.33 | 6.64 MB |
| ruby | flame | 21039.00 | 6116.00 | 43857.33 | 3.87 MB |
| ruby | hanami | 19916.67 | 6450.00 | 43367.33 | 47.11 MB |
| crystal | kemal | 26241.67 | 38333.00 | 53639.00 | 11.97 MB |
| crystal | router.cr | 32949.33 | 30163.67 | 48114.67 | 8.83 MB |
| crystal | amber | 25937.67 | 41523.33 | 191221.67 | 11.03 MB |
| crystal | lucky | 28037.00 | 35525.67 | 54591.00 | 10.06 MB |
| crystal | spider-gazelle | 32191.33 | 31266.67 | 50261.00 | 8.27 MB |
| go | echo | 97116.67 | 11351.33 | 50338.67 | 55.86 MB |
| go | gorilla-mux | 91919.00 | 10792.00 | 33209.33 | 34.45 MB |
| go | iris | 104709.00 | 9592.33 | 27661.00 | 39.20 MB |
| go | fasthttprouter | 169550.00 | 5936.00 | 17381.33 | 77.99 MB |
| go | gin | 28369.67 | 56173.00 | 313997.00 | 16.50 MB |
| rust | actix-web | 192814.33 | 4801.00 | 14455.33 | 72.33 MB |
| rust | iron | 104620.00 | 561.67 | 2507.00 | 39.56 MB |
| rust | nickel | 81319.67 | 103.00 | 297.33 | 48.74 MB |
| rust | rocket | 97964.33 | 139.67 | 829.67 | 41.30 MB |
| node | express | 55013.67 | 23975.67 | 264864.33 | 46.00 MB |
| node | fastify | 75240.00 | 17954.00 | 192346.00 | 75.39 MB |
| node | polka | 90443.33 | 14183.67 | 132408.33 | 45.32 MB |
| node | rayo | 87775.67 | 14052.33 | 113420.00 | 43.90 MB |
| node | koa | 61574.67 | 23661.00 | 342473.67 | 44.97 MB |
| node | restify | 58498.33 | 19266.67 | 127451.00 | 35.07 MB |
| elixir | plug | 49210.33 | 24896.33 | 142760.67 | 31.30 MB |
| elixir | phoenix | 45529.33 | 28456.67 | 211058.00 | 30.67 MB |
| swift | vapor | 55761.67 | 27291.00 | 441861.00 | 20.00 MB |
| swift | perfect | 59168.33 | 16478.67 | 20715.00 | 16.88 MB |
| swift | kitura | 35671.33 | 29004.00 | 85609.33 | 20.35 MB |
| scala | akkahttp | 64432.33 | 206881.33 | 4339488.67 | 49.93 MB |
| csharp | aspnetcore | 99514.33 | 10163.67 | 30573.33 | 52.31 MB |
| python | sanic | 18267.00 | 56052.00 | 159447.33 | 10.71 MB |
| python | flask | 20657.67 | 52338.33 | 148850.67 | 17.11 MB |
| python | django | 12434.67 | 82708.33 | 198759.00 | 11.58 MB |
| python | tornado | 8666.67 | 112379.33 | 170080.00 | 6.16 MB |
| python | vibora | 144485.00 | 8425.67 | 22648.00 | 67.71 MB |
| nim | jester | 16642.33 | 240892.33 | 4590197.00 | 6.24 MB |
| nim | mofuw | 125784.67 | 9016.33 | 56692.00 | 71.40 MB |
| java | act | 125644.00 | 10037.67 | 68708.33 | 46.15 MB |
| cpp | evhtp | 170223.33 | 5423.33 | 14555.33 | 54.59 MB |
| php | symfony | 49262.33 | 180582.00 | 2693203.00 | 77.60 MB |
| php | laravel | 45492.67 | 256662.67 | 4052371.33 | 70.55 MB |
In any way you want ...
- Request a framework addition
- Report a bug (on any implementation)
- Suggest an idea
- ...
Any kind of idea is ❤️
- Taichiro Suzuki - Author, maintainer
- OvermindDL1 - Maintainer
- Marwan Rabbâa - Mainainer