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- Make framework list
bin/make config- 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-09-03
OS: Linux (version: 5.2.9-200.fc30.x86_64, arch: x86_64)
CPU Cores: 12
1️⃣ nickel (rust)
2️⃣ iron (rust)
3️⃣ swifter (swift)
4️⃣ rocket (rust)
5️⃣ cuba (ruby)
| Language (Runtime) | Framework (Middleware) | Average | 50th percentile | 90th percentile | 99th percentile | 99.9th percentile | Standard deviation |
|---|---|---|---|---|---|---|---|
rust (1.37) |
nickel (0.11) | 0.07 ms | 0.06 ms | 0.12 ms | 0.15 ms | 3.30 ms | 43.00 |
rust (1.37) |
iron (0.6) | 0.44 ms | 0.24 ms | 1.07 ms | 2.77 ms | 16.18 ms | 588.67 |
swift (5.0) |
swifter (1.4) | 4.05 ms | 0.77 ms | 14.45 ms | 15.47 ms | 2534.78 ms | 38610.33 |
rust (nightly) |
rocket (0.4) | 91.59 ms | 1.47 ms | 4.17 ms | 3000.24 ms | 6593.07 ms | 533968.67 |
ruby (2.6) |
cuba (3.9) | 3.46 ms | 1.66 ms | 9.05 ms | 18.47 ms | 54.01 ms | 4235.33 |
ruby (2.6) |
roda (3.23) | 2.99 ms | 1.78 ms | 7.47 ms | 14.52 ms | 41.02 ms | 3380.33 |
python (3.7) |
japronto (0.1) | 3.31 ms | 1.85 ms | 7.80 ms | 17.66 ms | 39.93 ms | 3771.00 |
c (11) |
agoo-c (0.5) | 2.95 ms | 1.85 ms | 6.79 ms | 14.21 ms | 43.79 ms | 3186.33 |
node (12.9) |
sifrr (0.0) | 3.58 ms | 2.05 ms | 8.85 ms | 18.89 ms | 46.95 ms | 4138.33 |
go (1.12) |
atreugo (8.2) | 3.21 ms | 2.33 ms | 5.77 ms | 12.44 ms | 224.25 ms | 4674.33 |
cpp (14/17) |
drogon (1.0) | 3.16 ms | 2.37 ms | 6.25 ms | 14.57 ms | 40.10 ms | 3017.33 |
go (1.12) |
fasthttprouter (0.1) | 3.19 ms | 2.38 ms | 5.82 ms | 12.68 ms | 105.61 ms | 3364.00 |
ruby (2.6) |
rack-routing (0.0) | 4.23 ms | 2.41 ms | 10.82 ms | 21.25 ms | 59.87 ms | 4970.00 |
go (1.12) |
gorouter-fasthttp (4.1) | 3.26 ms | 2.42 ms | 5.82 ms | 13.06 ms | 210.49 ms | 4493.67 |
java (8) |
rapidoid (5.5) | 4.05 ms | 2.65 ms | 9.27 ms | 19.30 ms | 142.40 ms | 5214.00 |
c (99) |
kore (3.1) | 6.11 ms | 2.78 ms | 7.42 ms | 76.65 ms | 866.14 ms | 30530.67 |
cpp (11) |
evhtp (1.2) | 3.81 ms | 2.85 ms | 7.51 ms | 18.80 ms | 43.48 ms | 3689.33 |
crystal (0.29) |
spider-gazelle (1.6) | 3.99 ms | 2.99 ms | 8.20 ms | 16.27 ms | 42.62 ms | 3371.33 |
crystal (0.29) |
raze (0.3) | 3.73 ms | 3.03 ms | 7.26 ms | 14.43 ms | 30.82 ms | 2990.00 |
crystal (0.29) |
router.cr (0.2) | 3.44 ms | 3.04 ms | 6.14 ms | 12.07 ms | 29.00 ms | 2523.33 |
rust (1.37) |
gotham (0.4) | 4.04 ms | 3.23 ms | 7.42 ms | 15.68 ms | 202.65 ms | 5949.67 |
crystal (0.29) |
kemal (0.28) | 3.81 ms | 3.49 ms | 6.56 ms | 13.36 ms | 36.17 ms | 2685.67 |
crystal (0.29) |
amber (0.3) | 4.13 ms | 3.86 ms | 6.94 ms | 14.48 ms | 31.01 ms | 2771.67 |
ruby (2.6) |
flame (4.18) | 8.06 ms | 3.89 ms | 21.22 ms | 43.34 ms | 113.21 ms | 9896.67 |
go (1.12) |
rte (0.0) | 4.97 ms | 3.99 ms | 9.00 ms | 19.93 ms | 274.51 ms | 5280.33 |
go (1.12) |
gramework (1.6) | 4.92 ms | 4.06 ms | 9.28 ms | 17.63 ms | 223.45 ms | 6597.33 |
crystal (0.29) |
orion (1.7) | 4.65 ms | 4.27 ms | 8.15 ms | 17.25 ms | 40.44 ms | 3209.33 |
go (1.12) |
gorouter (4.1) | 5.50 ms | 4.31 ms | 10.51 ms | 23.70 ms | 118.64 ms | 5119.67 |
java (8) |
act (1.8) | 5.68 ms | 4.32 ms | 10.63 ms | 19.40 ms | 211.70 ms | 5583.00 |
go (1.12) |
chi (4.0) | 5.46 ms | 4.33 ms | 10.14 ms | 22.23 ms | 192.96 ms | 5701.00 |
ruby (2.6) |
agoo (2.1) | 6.14 ms | 4.33 ms | 9.77 ms | 69.67 ms | 111.77 ms | 10204.33 |
go (1.12) |
gin (1.4) | 5.61 ms | 4.41 ms | 10.86 ms | 23.88 ms | 146.23 ms | 5355.67 |
go (1.12) |
violetear (7.0) | 5.56 ms | 4.43 ms | 10.02 ms | 23.78 ms | 216.91 ms | 5876.67 |
go (1.12) |
gorilla-mux (1.7) | 5.83 ms | 4.44 ms | 11.44 ms | 25.37 ms | 217.74 ms | 6173.00 |
go (1.12) |
goroute (0.0) | 5.58 ms | 4.45 ms | 10.65 ms | 23.13 ms | 133.79 ms | 4979.00 |
go (1.12) |
echo (4.1) | 5.71 ms | 4.51 ms | 11.03 ms | 24.15 ms | 112.80 ms | 4727.33 |
csharp (7.3) |
aspnetcore (2.2) | 6.30 ms | 4.51 ms | 7.49 ms | 70.47 ms | 231.75 ms | 13387.33 |
go (1.12) |
kami (2.2) | 5.66 ms | 4.51 ms | 9.56 ms | 22.25 ms | 180.55 ms | 7038.67 |
go (1.12) |
beego (1.12) | 5.89 ms | 4.52 ms | 11.26 ms | 24.93 ms | 171.32 ms | 5977.33 |
nim (0.2) |
jester (0.4) | 4.73 ms | 4.69 ms | 7.14 ms | 12.66 ms | 38.38 ms | 2437.67 |
go (1.12) |
air (0.12) | 6.89 ms | 4.91 ms | 13.44 ms | 30.33 ms | 194.40 ms | 8569.67 |
go (1.12) |
gf (1.8) | 7.04 ms | 5.04 ms | 13.74 ms | 31.86 ms | 192.13 ms | 8047.00 |
node (12.9) |
0http (1.2) | 6.50 ms | 5.12 ms | 10.13 ms | 21.32 ms | 227.88 ms | 5305.67 |
scala (2.12) |
akkahttp (10.1) | 170.10 ms | 5.20 ms | 18.20 ms | 4495.57 ms | 7380.65 ms | 753266.33 |
node (12.9) |
polkadot (1.0) | 7.01 ms | 5.46 ms | 11.59 ms | 22.91 ms | 244.72 ms | 6845.33 |
node (12.9) |
polka (0.5) | 7.91 ms | 5.76 ms | 11.22 ms | 29.06 ms | 371.56 ms | 13854.33 |
python (3.7) |
falcon (2.0) | 8.67 ms | 5.89 ms | 16.87 ms | 36.75 ms | 255.81 ms | 9044.67 |
node (12.9) |
rayo (1.3) | 7.54 ms | 5.97 ms | 11.81 ms | 23.79 ms | 257.22 ms | 7276.67 |
node (12.9) |
restana (3.3) | 8.12 ms | 6.41 ms | 13.21 ms | 27.76 ms | 311.32 ms | 9376.00 |
kotlin (1.3) |
ktor (1.2) | 8.49 ms | 6.81 ms | 17.68 ms | 33.58 ms | 220.93 ms | 8029.00 |
rust (1.37) |
actix-web (1.0) | 7.60 ms | 6.92 ms | 10.58 ms | 15.50 ms | 74.70 ms | 2445.33 |
ruby (2.6) |
hanami (1.3) | 7.41 ms | 6.93 ms | 15.99 ms | 28.18 ms | 64.19 ms | 6617.67 |
ruby (2.6) |
sinatra (2.0) | 8.91 ms | 7.11 ms | 20.87 ms | 40.37 ms | 116.39 ms | 9259.33 |
node (12.9) |
muneem (2.4) | 10.65 ms | 7.54 ms | 14.19 ms | 62.84 ms | 567.81 ms | 25031.33 |
python (3.7) |
bottle (0.12) | 9.86 ms | 7.78 ms | 18.56 ms | 36.51 ms | 287.13 ms | 9366.33 |
node (12.9) |
foxify (0.1) | 10.12 ms | 8.26 ms | 14.73 ms | 35.23 ms | 430.09 ms | 15861.33 |
php (7.3) |
hyperf (1.0) | 11.46 ms | 8.74 ms | 24.12 ms | 47.06 ms | 110.97 ms | 9968.00 |
scala (2.12) |
http4s (0.18) | 10.43 ms | 8.87 ms | 18.83 ms | 34.37 ms | 424.68 ms | 11500.33 |
php (7.3) |
symfony (4.3) | 28.13 ms | 8.89 ms | 57.19 ms | 294.18 ms | 504.35 ms | 58363.67 |
php (7.3) |
zend-expressive (3.2) | 29.58 ms | 9.05 ms | 61.73 ms | 304.21 ms | 651.77 ms | 61600.67 |
swift (5.0) |
perfect (3.1) | 9.21 ms | 9.13 ms | 11.67 ms | 15.28 ms | 132.35 ms | 3571.67 |
php (7.3) |
slim (4.2) | 29.33 ms | 9.14 ms | 60.07 ms | 300.91 ms | 670.11 ms | 60632.00 |
node (12.9) |
fastify (2.8) | 12.66 ms | 9.21 ms | 18.66 ms | 59.31 ms | 597.88 ms | 23846.67 |
java (8) |
spring-boot (2.1) | 11.24 ms | 9.26 ms | 17.73 ms | 33.89 ms | 329.19 ms | 9947.00 |
php (7.3) |
lumen (5.8) | 30.05 ms | 9.53 ms | 61.64 ms | 307.17 ms | 596.18 ms | 61433.00 |
python (3.7) |
hug (2.6) | 12.90 ms | 9.56 ms | 25.12 ms | 45.43 ms | 284.99 ms | 11407.00 |
node (12.9) |
koa (2.8) | 11.75 ms | 9.63 ms | 18.56 ms | 36.86 ms | 344.51 ms | 10867.00 |
php (7.3) |
zend-framework (3.1) | 32.75 ms | 9.63 ms | 62.76 ms | 357.46 ms | 549.25 ms | 71087.00 |
node (12.9) |
iotjs-express (0.0) | 13.44 ms | 10.16 ms | 19.51 ms | 78.96 ms | 488.79 ms | 21055.00 |
swift (5.0) |
vapor (3.3) | 15.91 ms | 10.45 ms | 19.87 ms | 138.98 ms | 1038.47 ms | 41577.00 |
python (3.7) |
blacksheep (0.1) | 11.51 ms | 11.09 ms | 17.19 ms | 26.34 ms | 78.35 ms | 4774.00 |
node (12.9) |
express (4.17) | 15.37 ms | 11.51 ms | 22.04 ms | 96.54 ms | 538.12 ms | 24496.67 |
node (12.9) |
restify (8.4) | 12.14 ms | 11.53 ms | 15.48 ms | 28.89 ms | 213.58 ms | 6713.33 |
php (7.3) |
laravel (5.8) | 56.93 ms | 11.97 ms | 106.08 ms | 730.72 ms | 1253.26 ms | 145620.00 |
python (3.7) |
starlette (0.12) | 12.78 ms | 12.38 ms | 18.29 ms | 25.22 ms | 198.50 ms | 5162.67 |
node (12.9) |
moleculer (0.13) | 17.18 ms | 13.88 ms | 25.94 ms | 53.70 ms | 404.96 ms | 13768.33 |
swift (5.0) |
kitura (2.7) | 19.48 ms | 17.35 ms | 18.58 ms | 37.85 ms | 868.63 ms | 33693.33 |
swift (5.0) |
kitura-nio (2.7) | 28.67 ms | 17.95 ms | 30.65 ms | 392.59 ms | 1575.53 ms | 87135.00 |
node (12.9) |
hapi (18.1) | 25.23 ms | 18.61 ms | 36.15 ms | 141.59 ms | 785.96 ms | 36155.67 |
ruby (2.6) |
rails (6.0) | 44.85 ms | 18.85 ms | 123.94 ms | 289.03 ms | 747.84 ms | 63011.33 |
python (3.7) |
fastapi (0.38) | 21.87 ms | 19.35 ms | 36.76 ms | 57.51 ms | 155.52 ms | 11442.33 |
python (3.7) |
flask (1.1) | 26.69 ms | 21.17 ms | 43.38 ms | 73.37 ms | 471.25 ms | 18255.33 |
php (7.3) |
swoft (2.0) | 22.80 ms | 21.20 ms | 30.71 ms | 48.77 ms | 83.27 ms | 6818.67 |
crystal (0.29) |
lucky (0.16) | 21.33 ms | 21.68 ms | 23.30 ms | 24.88 ms | 172.67 ms | 2485.00 |
python (3.7) |
molten (0.27) | 31.98 ms | 22.48 ms | 67.14 ms | 106.27 ms | 276.15 ms | 22873.67 |
python (3.7) |
aiohttp (3.5) | 25.39 ms | 24.83 ms | 34.85 ms | 41.14 ms | 131.18 ms | 7329.00 |
python (3.7) |
sanic (19.6) | 29.71 ms | 26.96 ms | 50.06 ms | 78.88 ms | 130.70 ms | 15423.00 |
python (3.7) |
bocadillo (0.18) | 31.99 ms | 29.21 ms | 53.25 ms | 80.63 ms | 258.47 ms | 16934.67 |
node (12.9) |
turbo_polka (2.0) | 34.75 ms | 33.46 ms | 37.93 ms | 72.71 ms | 595.14 ms | 21657.67 |
crystal (0.29) |
athena (0.7) | 48.93 ms | 49.02 ms | 52.00 ms | 53.73 ms | 129.27 ms | 3811.00 |
python (3.7) |
django (2.2) | 79.14 ms | 56.72 ms | 159.37 ms | 232.44 ms | 530.30 ms | 53567.67 |
python (3.7) |
quart (0.1) | 63.37 ms | 56.99 ms | 105.87 ms | 165.24 ms | 304.55 ms | 31386.33 |
python (3.7) |
responder (1.3) | 64.91 ms | 61.19 ms | 90.76 ms | 110.73 ms | 260.76 ms | 19224.67 |
python (3.7) |
masonite (2.2) | 94.79 ms | 71.68 ms | 175.89 ms | 271.38 ms | 571.85 ms | 57738.00 |
python (3.7) |
tornado (5.1) | 89.56 ms | 85.52 ms | 113.18 ms | 200.91 ms | 719.21 ms | 33988.00 |
crystal (0.29) |
onyx (0.5) | 187.66 ms | 186.53 ms | 216.90 ms | 241.44 ms | 306.25 ms | 23430.00 |
1️⃣ (agoo-c) (c)
2️⃣ (japronto) (python)
3️⃣ (sifrr) (node)
4️⃣ (drogon) (cpp)
5️⃣ (atreugo) (go)
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
