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-09-05
OS: Linux (version: 4.16.11-100.fc26.x86_64, arch: x86_64)
CPU Cores: 8
Ranked by latency (ordered by 50th percentile - lowest is better)
| Language (Runtime) | Framework (Middleware) | Average | 50% percentile | 90% percentile | 99% percentile | 99.9% percentile | Standard deviation |
|---|---|---|---|---|---|---|---|
| rust | nickel | 0.11 ms | 0.10 ms | 0.14 ms | 0.31 ms | 4.65 ms | 88.33 |
| rust | rocket | 0.14 ms | 0.12 ms | 0.18 ms | 0.84 ms | 6.76 ms | 166.33 |
| rust | iron | 0.55 ms | 0.45 ms | 0.97 ms | 2.63 ms | 27.26 ms | 546.00 |
| ruby | roda | 2.85 ms | 2.02 ms | 6.16 ms | 14.05 ms | 52.37 ms | 2866.67 |
| ruby | rack-routing | 3.71 ms | 2.43 ms | 7.70 ms | 23.51 ms | 104.15 ms | 4875.67 |
| ruby | hanami | 6.70 ms | 3.02 ms | 17.06 ms | 54.84 ms | 141.71 ms | 10685.67 |
| php | symfony | 171.45 ms | 3.19 ms | 478.82 ms | 2457.75 ms | 6922.00 ms | 521488.00 |
| php | laravel | 236.28 ms | 3.95 ms | 536.97 ms | 3821.15 ms | 6062.81 ms | 733340.33 |
| ruby | flame | 6.08 ms | 4.17 ms | 13.94 ms | 27.66 ms | 106.33 ms | 6025.00 |
| rust | actix-web | 4.75 ms | 4.21 ms | 8.70 ms | 13.72 ms | 89.51 ms | 3232.00 |
| cpp | evhtp | 4.95 ms | 4.50 ms | 8.33 ms | 13.40 ms | 100.46 ms | 2816.33 |
| go | fasthttprouter | 5.63 ms | 5.11 ms | 8.39 ms | 15.22 ms | 48.25 ms | 2524.00 |
| ruby | sinatra | 8.18 ms | 5.38 ms | 19.26 ms | 39.09 ms | 122.72 ms | 8492.33 |
| crystal | spider-gazelle | 6.75 ms | 5.74 ms | 11.81 ms | 19.89 ms | 43.22 ms | 3906.00 |
| python | vibora | 6.81 ms | 5.96 ms | 12.52 ms | 19.83 ms | 44.06 ms | 4190.00 |
| java | act | 8.28 ms | 7.25 ms | 12.05 ms | 21.25 ms | 219.79 ms | 6692.00 |
| ruby | rails | 27.26 ms | 7.34 ms | 85.99 ms | 165.88 ms | 340.88 ms | 39236.67 |
| csharp | aspnetcore | 10.09 ms | 8.47 ms | 15.49 ms | 24.71 ms | 373.36 ms | 11616.33 |
| go | iris | 9.27 ms | 8.48 ms | 13.92 ms | 25.47 ms | 129.27 ms | 4675.00 |
| scala | akkahttp | 160.87 ms | 8.87 ms | 47.09 ms | 3699.45 ms | 6884.99 ms | 660280.67 |
| go | echo | 10.75 ms | 9.09 ms | 15.62 ms | 31.55 ms | 383.23 ms | 12691.00 |
| go | gorilla-mux | 10.89 ms | 9.55 ms | 16.82 ms | 32.07 ms | 240.17 ms | 7384.33 |
| nim | mofuw | 29.75 ms | 10.25 ms | 65.15 ms | 304.85 ms | 469.47 ms | 61466.67 |
| python | bottle | 19.80 ms | 14.44 ms | 37.60 ms | 83.59 ms | 327.51 ms | 16599.33 |
| swift | perfect | 15.39 ms | 15.65 ms | 17.34 ms | 19.43 ms | 159.07 ms | 3051.33 |
| node | fastify | 24.74 ms | 15.68 ms | 33.23 ms | 245.33 ms | 951.00 ms | 49878.00 |
| node | polka | 24.27 ms | 15.99 ms | 39.38 ms | 170.64 ms | 823.84 ms | 39921.00 |
| node | rayo | 30.79 ms | 16.36 ms | 41.31 ms | 432.97 ms | 1280.63 ms | 78758.67 |
| swift | vapor | 33.99 ms | 17.12 ms | 29.92 ms | 677.92 ms | 1969.29 ms | 121607.67 |
| python | japronto | 19.95 ms | 19.44 ms | 21.03 ms | 28.44 ms | 395.61 ms | 7496.00 |
| node | koa | 33.26 ms | 20.90 ms | 44.82 ms | 378.76 ms | 1193.97 ms | 69319.33 |
| node | restify | 29.97 ms | 22.77 ms | 47.18 ms | 118.87 ms | 754.96 ms | 34341.67 |
| node | express | 37.26 ms | 22.85 ms | 52.24 ms | 432.31 ms | 1326.00 ms | 77545.00 |
| swift | kitura | 25.78 ms | 26.03 ms | 27.32 ms | 28.67 ms | 307.63 ms | 8321.67 |
| crystal | raze | 29.42 ms | 26.89 ms | 37.10 ms | 47.35 ms | 464.02 ms | 15329.00 |
| crystal | router.cr | 30.66 ms | 27.54 ms | 41.00 ms | 49.88 ms | 198.30 ms | 8091.00 |
| go | gin | 54.37 ms | 27.67 ms | 153.04 ms | 263.50 ms | 488.78 ms | 63431.00 |
| crystal | raze | 29.42 ms | 26.89 ms | 37.10 ms | 47.35 ms | 464.02 ms | 15329.00 |
| node | hapi | 65.99 ms | 33.10 ms | 69.51 ms | 1095.64 ms | 2125.74 ms | 172292.67 |
| crystal | prism | 33.29 ms | 34.99 ms | 41.98 ms | 50.81 ms | 228.00 ms | 7860.00 |
| crystal | lucky | 37.66 ms | 39.37 ms | 46.21 ms | 54.59 ms | 261.05 ms | 10153.67 |
| crystal | kemal | 40.64 ms | 40.88 ms | 48.89 ms | 56.41 ms | 331.08 ms | 9643.67 |
| crystal | amber | 41.04 ms | 41.31 ms | 49.51 ms | 58.34 ms | 571.87 ms | 21251.33 |
| python | flask | 49.56 ms | 43.44 ms | 77.74 ms | 112.96 ms | 357.92 ms | 20094.00 |
| python | sanic | 52.49 ms | 47.22 ms | 90.51 ms | 141.90 ms | 297.75 ms | 28409.00 |
| python | django | 82.09 ms | 72.08 ms | 114.52 ms | 308.86 ms | 1359.63 ms | 67107.00 |
| python | tornado | 136.93 ms | 110.79 ms | 141.89 ms | 1061.46 ms | 2040.40 ms | 166686.67 |
Ranked by requests (ordered by number or requests per sencond - highest is better)
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
