This project aims to be a load benchmarking suite, no more, no less
Measuring response times (routing times) for each framework (middleware).
- Helping decide between 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 - wrk as benchmarking tool,
>= 4.1.0
ℹ️ you need wrk stable
git clone --branch 4.1.0 https://github.com/wg/wrkdocker is used for development purpose, production results will be computed on DigitalOcean
- Install all dependencies
shards install- Build internal tools
shards build- Build containers
jobs are either languages (example : crystal) or frameworks (example : router.cr)
bin/neph [job1] [job2] [job3] ...- Start the benchmark ....
tools is a list of language / framework to challenge (example : ruby kemal amber go python)
bin/benchmarker [tools]Last update: 2019-03-26
OS: Linux (version: 4.16.3-301.fc28.x86_64, arch: x86_64)
CPU Cores: 8
1️⃣ nickel (rust)
2️⃣ roda (ruby)
3️⃣ rack-routing (ruby)
4️⃣ symfony (php)
5️⃣ slim (php)
| Language (Runtime) | Framework (Middleware) | Average | 50th percentile | 90th percentile | 99th percentile | 99.9th percentile | Standard deviation |
|---|---|---|---|---|---|---|---|
| rust (1.32) | nickel (0.11) | 0.06 ms | 0.06 ms | 0.09 ms | 0.12 ms | 3.00 ms | 41.33 |
| ruby (2.6) | roda (3.18) | 2.75 ms | 0.15 ms | 9.96 ms | 25.75 ms | 75.87 ms | 5644.00 |
| ruby (2.6) | rack-routing (0.0) | 3.51 ms | 0.18 ms | 13.36 ms | 31.01 ms | 76.37 ms | 7022.33 |
| php (7.3) | symfony (4.2) | 90.58 ms | 0.24 ms | 169.38 ms | 2007.05 ms | 6720.69 ms | 377427.33 |
| php (7.3) | slim (3.12) | 87.08 ms | 0.25 ms | 147.41 ms | 2073.78 ms | 6777.59 ms | 403966.67 |
| php (7.3) | laravel (5.8) | 98.89 ms | 0.25 ms | 225.14 ms | 1955.48 ms | 6447.81 ms | 375272.67 |
| rust (1.32) | iron (0.6) | 0.30 ms | 0.27 ms | 0.49 ms | 0.87 ms | 16.38 ms | 211.67 |
| ruby (2.6) | flame (4.18) | 5.42 ms | 0.30 ms | 19.03 ms | 41.30 ms | 97.30 ms | 9577.33 |
| ruby (2.6) | hanami (1.3) | 6.32 ms | 0.33 ms | 22.49 ms | 47.06 ms | 120.64 ms | 11205.33 |
| ruby (2.6) | sinatra (2.0) | 7.23 ms | 0.42 ms | 23.92 ms | 48.78 ms | 111.99 ms | 11685.00 |
| php (7.3) | zend-expressive (3.2) | 92.81 ms | 1.22 ms | 166.13 ms | 2149.24 ms | 5728.52 ms | 368277.00 |
| php (7.3) | lumen (5.8) | 92.05 ms | 1.26 ms | 171.13 ms | 2030.80 ms | 5266.59 ms | 354774.67 |
| rust (nightly) | rocket (0.4) | 63.09 ms | 1.49 ms | 3.25 ms | 2074.56 ms | 5504.92 ms | 385175.33 |
| ruby (2.6) | rails (5.2) | 28.28 ms | 1.69 ms | 97.56 ms | 270.96 ms | 777.91 ms | 57531.67 |
| php (7.3) | zend-framework (3.1) | 65.18 ms | 1.85 ms | 160.37 ms | 1251.03 ms | 3966.31 ms | 249210.67 |
| c (11) | agoo-c (0.4) | 2.82 ms | 1.94 ms | 6.19 ms | 12.30 ms | 50.07 ms | 2850.67 |
| python (3.7) | japronto (0.1) | 2.71 ms | 1.97 ms | 5.92 ms | 12.21 ms | 40.06 ms | 2652.00 |
| rust (1.32) | actix-web (0.7) | 2.85 ms | 2.15 ms | 5.88 ms | 13.46 ms | 124.22 ms | 3363.67 |
| c (99) | kore (3.1) | 6.13 ms | 2.76 ms | 7.18 ms | 63.38 ms | 736.12 ms | 32236.00 |
| python (3.6) | vibora (0.0) | 3.47 ms | 2.85 ms | 7.35 ms | 13.54 ms | 32.55 ms | 2986.00 |
| nim (0.19) | jester (0.4) | 3.36 ms | 2.94 ms | 5.61 ms | 10.98 ms | 26.50 ms | 2064.00 |
| crystal (0.27) | spider-gazelle (1.4) | 3.56 ms | 3.02 ms | 6.72 ms | 12.55 ms | 27.84 ms | 2575.67 |
| crystal (0.27) | onyx (0.3) | 3.34 ms | 3.02 ms | 5.78 ms | 11.24 ms | 23.51 ms | 2241.33 |
| rust (1.32) | gotham (0.3) | 4.05 ms | 3.05 ms | 7.58 ms | 18.22 ms | 230.50 ms | 6052.00 |
| go (1.12) | fasthttprouter (0.1) | 3.67 ms | 3.08 ms | 5.78 ms | 11.57 ms | 107.75 ms | 3414.33 |
| cpp (11.0) | evhtp (1.2) | 3.13 ms | 3.14 ms | 5.25 ms | 7.30 ms | 96.47 ms | 2115.33 |
| ruby (2.6) | agoo (2.8) | 5.60 ms | 3.19 ms | 7.89 ms | 77.81 ms | 126.47 ms | 11619.67 |
| go (1.12) | muxie (1.0) | 5.21 ms | 4.28 ms | 10.19 ms | 21.88 ms | 106.07 ms | 4411.67 |
| go (1.12) | iris (11.1) | 5.17 ms | 4.31 ms | 9.85 ms | 21.23 ms | 158.07 ms | 4775.00 |
| go (1.12) | beego (1.12) | 5.83 ms | 4.40 ms | 11.48 ms | 24.55 ms | 284.45 ms | 7871.33 |
| go (1.12) | echo (4.0) | 5.85 ms | 4.44 ms | 12.14 ms | 25.02 ms | 165.19 ms | 5945.00 |
| node (11.12) | restana (2.10) | 4.78 ms | 4.48 ms | 7.48 ms | 14.53 ms | 206.79 ms | 5083.33 |
| go (1.12) | kami (2.2) | 5.88 ms | 4.61 ms | 11.06 ms | 23.72 ms | 227.03 ms | 5545.00 |
| go (1.12) | chi (4.0) | 6.18 ms | 4.64 ms | 12.81 ms | 25.80 ms | 111.08 ms | 5605.33 |
| go (1.12) | gin (1.3) | 6.68 ms | 4.73 ms | 14.20 ms | 28.94 ms | 208.72 ms | 6497.00 |
| node (11.12) | polka (0.5) | 5.82 ms | 4.74 ms | 9.43 ms | 17.78 ms | 214.97 ms | 5906.33 |
| node (11.12) | rayo (1.2) | 6.37 ms | 4.89 ms | 9.75 ms | 19.27 ms | 236.38 ms | 7070.00 |
| csharp (7.3) | aspnetcore (2.2) | 5.58 ms | 5.02 ms | 8.40 ms | 14.71 ms | 158.36 ms | 3449.67 |
| java (8) | act (1.8) | 6.23 ms | 5.30 ms | 10.05 ms | 22.10 ms | 233.07 ms | 5833.67 |
| go (1.12) | gf (1.5) | 7.88 ms | 5.38 ms | 16.20 ms | 35.75 ms | 237.11 ms | 8668.33 |
| go (1.12) | gorilla-mux (1.7) | 8.07 ms | 5.46 ms | 17.52 ms | 36.05 ms | 125.02 ms | 7503.33 |
| python (3.7) | falcon (1.4) | 7.19 ms | 5.69 ms | 13.64 ms | 24.92 ms | 137.97 ms | 5237.67 |
| node (11.12) | koa (2.7) | 7.86 ms | 6.18 ms | 11.12 ms | 23.10 ms | 321.41 ms | 11430.67 |
| node (11.12) | fastify (2.1) | 7.76 ms | 6.29 ms | 11.73 ms | 22.49 ms | 319.62 ms | 9764.67 |
| node (11.12) | foxify (0.10) | 7.83 ms | 6.29 ms | 11.86 ms | 22.86 ms | 283.26 ms | 9029.00 |
| python (3.7) | bottle (0.12) | 8.39 ms | 6.32 ms | 16.84 ms | 30.16 ms | 113.89 ms | 6679.67 |
| node (11.12) | muneem (2.4) | 10.38 ms | 6.76 ms | 14.30 ms | 95.51 ms | 524.96 ms | 25663.33 |
| scala (2.12) | akkahttp (10.1) | 179.18 ms | 6.93 ms | 200.17 ms | 3815.92 ms | 6860.44 ms | 682326.33 |
| python (3.7) | hug (2.4) | 10.39 ms | 8.12 ms | 17.82 ms | 32.67 ms | 282.71 ms | 8797.67 |
| node (11.12) | express (4.16) | 10.05 ms | 8.24 ms | 13.85 ms | 49.89 ms | 443.95 ms | 17621.67 |
| node (11.12) | restify (8.2) | 9.36 ms | 8.46 ms | 12.77 ms | 26.50 ms | 250.22 ms | 7535.00 |
| python (3.7) | starlette (0.11) | 9.80 ms | 8.56 ms | 15.85 ms | 23.35 ms | 73.25 ms | 4685.00 |
| swift (4.2) | perfect (3.1) | 10.25 ms | 10.36 ms | 11.82 ms | 13.43 ms | 168.62 ms | 2931.00 |
| swift (4.2) | vapor (3.3) | 14.34 ms | 10.43 ms | 19.54 ms | 69.76 ms | 845.78 ms | 33597.33 |
| scala (2.12) | http4s (0.18) | 12.80 ms | 10.99 ms | 23.33 ms | 42.43 ms | 385.59 ms | 12506.33 |
| python (3.7) | fastapi (0.9) | 13.38 ms | 12.19 ms | 22.29 ms | 33.70 ms | 56.95 ms | 6770.33 |
| python (3.7) | aiohttp (3.5) | 17.12 ms | 13.90 ms | 34.71 ms | 49.32 ms | 81.44 ms | 11281.67 |
| python (3.7) | molten (0.7) | 22.24 ms | 14.63 ms | 51.06 ms | 70.01 ms | 230.92 ms | 16966.00 |
| python (3.7) | bocadillo (0.13) | 17.76 ms | 16.89 ms | 30.52 ms | 42.12 ms | 63.44 ms | 9111.00 |
| swift (4.2) | kitura (2.6) | 23.49 ms | 17.58 ms | 31.97 ms | 118.97 ms | 1061.15 ms | 42578.00 |
| node (11.12) | hapi (18.1) | 23.69 ms | 18.69 ms | 31.38 ms | 113.72 ms | 775.93 ms | 34998.33 |
| python (3.7) | flask (1.0) | 27.32 ms | 22.26 ms | 44.35 ms | 81.71 ms | 539.87 ms | 21841.00 |
| crystal (0.27) | router.cr (0.2) | 23.77 ms | 22.72 ms | 30.91 ms | 67.94 ms | 140.84 ms | 10601.33 |
| crystal (0.27) | raze (0.3) | 25.15 ms | 24.87 ms | 32.58 ms | 37.38 ms | 313.69 ms | 10569.33 |
| crystal (0.27) | kemal (0.25) | 26.71 ms | 28.25 ms | 34.36 ms | 40.14 ms | 175.86 ms | 7322.33 |
| crystal (0.27) | orion (1.6) | 35.68 ms | 29.26 ms | 40.70 ms | 217.88 ms | 701.82 ms | 41686.33 |
| crystal (0.27) | lucky (0.11) | 29.18 ms | 29.50 ms | 35.18 ms | 39.41 ms | 317.53 ms | 9274.33 |
| crystal (0.27) | amber (0.11) | 31.32 ms | 30.60 ms | 35.99 ms | 39.20 ms | 219.27 ms | 5896.33 |
| python (3.7) | sanic (19.3) | 39.04 ms | 33.39 ms | 70.08 ms | 129.93 ms | 255.47 ms | 25489.33 |
| python (3.7) | quart (0.8) | 39.40 ms | 36.76 ms | 57.68 ms | 81.56 ms | 121.03 ms | 13272.33 |
| python (3.7) | django (2.1) | 44.88 ms | 40.25 ms | 64.90 ms | 100.64 ms | 441.96 ms | 19895.00 |
| python (3.7) | responder (1.3) | 50.84 ms | 45.93 ms | 88.07 ms | 116.39 ms | 159.51 ms | 26588.33 |
| python (3.7) | tornado (5.1) | 68.36 ms | 69.99 ms | 81.76 ms | 101.96 ms | 408.50 ms | 17560.00 |
1️⃣ (japronto) (python)
2️⃣ (agoo-c) (c)
3️⃣ (actix-web) (rust)
4️⃣ (jester) (nim)
5️⃣ (vibora) (python)
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 - Maintainer
