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-08
OS: Linux (version: 5.2.11-200.fc30.x86_64, arch: x86_64)
CPU Cores: 12
1️⃣ nickel (rust)
2️⃣ iron (rust)
3️⃣ swifter (swift)
4️⃣ roda (ruby)
5️⃣ agoo-c (c)
| Language (Runtime) | Framework (Middleware) | Average | 50th percentile | 90th percentile | 99th percentile | 99.9th percentile | Standard deviation |
|---|---|---|---|---|---|---|---|
rust (1.37) |
nickel (0.11) | 0.06 ms | 0.06 ms | 0.10 ms | 0.12 ms | 3.89 ms | 52.33 |
rust (1.37) |
iron (0.6) | 0.41 ms | 0.18 ms | 1.01 ms | 2.87 ms | 15.52 ms | 599.00 |
swift (5.0) |
swifter (1.4) | 4.73 ms | 0.89 ms | 14.61 ms | 15.05 ms | 1548.31 ms | 18113.00 |
ruby (2.6) |
roda (3.23) | 2.71 ms | 1.31 ms | 7.05 ms | 13.35 ms | 30.45 ms | 3164.67 |
c (11) |
agoo-c (0.5) | 2.72 ms | 1.36 ms | 6.27 ms | 14.14 ms | 154.93 ms | 4211.33 |
ruby (2.6) |
syro (3.1) | 2.69 ms | 1.74 ms | 6.67 ms | 12.38 ms | 28.02 ms | 2946.33 |
python (3.7) |
japronto (0.1) | 3.17 ms | 1.79 ms | 7.38 ms | 16.99 ms | 39.37 ms | 3606.67 |
node (12.1) |
sifrr (0.0) | 2.53 ms | 1.95 ms | 5.38 ms | 11.39 ms | 29.27 ms | 2335.33 |
ruby (2.6) |
cuba (3.9) | 3.02 ms | 2.12 ms | 7.34 ms | 13.41 ms | 29.97 ms | 3207.67 |
go (1.13) |
fasthttprouter (0.1) | 3.00 ms | 2.18 ms | 5.68 ms | 12.82 ms | 207.66 ms | 3553.00 |
java (8) |
rapidoid (5.5) | 3.61 ms | 2.20 ms | 8.52 ms | 20.06 ms | 106.94 ms | 4587.67 |
go (1.13) |
atreugo (8.2) | 3.04 ms | 2.22 ms | 5.71 ms | 13.12 ms | 106.68 ms | 3086.00 |
go (1.13) |
gorouter-fasthttp (4.1) | 3.07 ms | 2.23 ms | 5.72 ms | 13.24 ms | 155.96 ms | 3706.00 |
cpp (14/17) |
drogon (1.0) | 3.08 ms | 2.23 ms | 6.27 ms | 15.05 ms | 54.32 ms | 3108.00 |
ruby (2.6) |
rails (6.0) | 33.54 ms | 2.38 ms | 111.37 ms | 308.92 ms | 914.45 ms | 65854.00 |
ruby (2.6) |
rack-routing (0.0) | 3.63 ms | 2.44 ms | 8.79 ms | 16.22 ms | 37.90 ms | 3856.00 |
c (99) |
kore (3.1) | 12.73 ms | 2.69 ms | 6.97 ms | 317.15 ms | 1683.88 ms | 82863.67 |
cpp (11) |
evhtp (1.2) | 3.76 ms | 2.72 ms | 7.63 ms | 19.04 ms | 41.41 ms | 3782.33 |
crystal (0.29) |
spider-gazelle (1.6) | 3.81 ms | 2.84 ms | 7.88 ms | 15.70 ms | 33.15 ms | 3263.00 |
crystal (0.29) |
router.cr (0.2) | 3.43 ms | 2.86 ms | 6.40 ms | 12.78 ms | 28.41 ms | 2669.00 |
rust (1.37) |
gotham (0.4) | 3.47 ms | 2.96 ms | 5.57 ms | 12.86 ms | 273.68 ms | 6441.67 |
crystal (0.29) |
raze (0.3) | 3.58 ms | 2.99 ms | 6.71 ms | 13.99 ms | 32.25 ms | 2861.00 |
crystal (0.29) |
kemal (0.28) | 3.64 ms | 3.35 ms | 6.19 ms | 12.63 ms | 29.81 ms | 2546.67 |
go (1.13) |
gramework (1.6) | 4.25 ms | 3.44 ms | 7.58 ms | 12.96 ms | 184.00 ms | 3985.33 |
java (8) |
act (1.8) | 5.19 ms | 3.52 ms | 10.11 ms | 19.57 ms | 215.67 ms | 6195.33 |
ruby (2.6) |
agoo (2.1) | 6.56 ms | 3.64 ms | 9.29 ms | 85.00 ms | 117.39 ms | 13333.00 |
crystal (0.29) |
amber (0.3) | 4.00 ms | 3.68 ms | 6.84 ms | 14.72 ms | 30.68 ms | 2809.33 |
go (1.13) |
rte (0.0) | 4.66 ms | 3.72 ms | 8.48 ms | 18.12 ms | 104.67 ms | 4324.00 |
ruby (2.6) |
flame (4.18) | 5.25 ms | 3.99 ms | 12.72 ms | 24.08 ms | 52.01 ms | 5579.00 |
go (1.13) |
gorouter (4.1) | 5.10 ms | 3.99 ms | 9.09 ms | 19.40 ms | 223.22 ms | 6986.00 |
crystal (0.29) |
orion (1.7) | 4.50 ms | 4.00 ms | 8.27 ms | 17.88 ms | 42.13 ms | 3381.00 |
go (1.13) |
chi (4.0) | 5.20 ms | 4.03 ms | 9.43 ms | 20.09 ms | 232.17 ms | 7258.33 |
go (1.13) |
echo (4.1) | 5.25 ms | 4.09 ms | 9.86 ms | 20.56 ms | 220.88 ms | 6184.00 |
go (1.13) |
beego (1.12) | 5.52 ms | 4.18 ms | 10.09 ms | 22.04 ms | 228.11 ms | 8100.00 |
go (1.13) |
goroute (0.0) | 5.33 ms | 4.19 ms | 10.32 ms | 21.31 ms | 116.54 ms | 4952.33 |
go (1.13) |
violetear (7.0) | 5.18 ms | 4.20 ms | 8.76 ms | 19.48 ms | 284.66 ms | 7036.00 |
go (1.13) |
gorilla-mux (1.7) | 5.48 ms | 4.22 ms | 10.69 ms | 22.63 ms | 264.36 ms | 6124.67 |
go (1.13) |
kami (2.2) | 5.25 ms | 4.24 ms | 9.04 ms | 20.08 ms | 225.14 ms | 6228.67 |
go (1.13) |
gin (1.4) | 5.28 ms | 4.25 ms | 10.07 ms | 20.45 ms | 152.74 ms | 4404.33 |
csharp (7.3) |
aspnetcore (2.2) | 6.84 ms | 4.37 ms | 7.20 ms | 112.77 ms | 371.71 ms | 19928.33 |
nim (0.2) |
jester (0.4) | 4.57 ms | 4.51 ms | 6.92 ms | 12.15 ms | 54.55 ms | 2401.67 |
go (1.13) |
air (0.12) | 6.57 ms | 4.59 ms | 13.61 ms | 28.60 ms | 302.29 ms | 8845.00 |
go (1.13) |
gf (1.8) | 6.47 ms | 4.79 ms | 11.92 ms | 25.84 ms | 257.82 ms | 8425.67 |
python (3.7) |
falcon (2.0) | 8.11 ms | 4.88 ms | 18.73 ms | 37.07 ms | 221.61 ms | 8777.00 |
kotlin (1.3) |
ktor (1.2) | 8.31 ms | 4.90 ms | 20.35 ms | 40.63 ms | 230.62 ms | 9708.67 |
scala (2.12) |
akkahttp (10.1) | 102.15 ms | 4.97 ms | 13.82 ms | 2809.83 ms | 5547.78 ms | 477731.00 |
node (12.1) |
polkadot (1.0) | 6.51 ms | 5.11 ms | 9.65 ms | 18.97 ms | 247.05 ms | 6228.33 |
node (12.1) |
0http (1.2) | 6.60 ms | 5.15 ms | 9.64 ms | 18.27 ms | 266.38 ms | 7219.67 |
node (12.1) |
restana (3.3) | 6.95 ms | 5.38 ms | 9.77 ms | 19.75 ms | 282.83 ms | 8003.67 |
ruby (2.6) |
hanami (1.3) | 6.22 ms | 5.82 ms | 13.82 ms | 24.30 ms | 56.03 ms | 5800.67 |
node (12.1) |
polka (0.5) | 7.86 ms | 6.18 ms | 10.85 ms | 25.45 ms | 332.21 ms | 11292.00 |
node (12.1) |
rayo (1.3) | 7.84 ms | 6.28 ms | 11.04 ms | 23.69 ms | 339.35 ms | 10721.67 |
ruby (2.6) |
sinatra (2.0) | 7.67 ms | 6.40 ms | 17.78 ms | 33.63 ms | 67.30 ms | 7718.67 |
php (7.3) |
hyperf (1.0) | 11.33 ms | 6.77 ms | 26.26 ms | 60.50 ms | 161.37 ms | 12537.00 |
python (3.7) |
bottle (0.12) | 10.26 ms | 6.83 ms | 21.82 ms | 44.20 ms | 282.83 ms | 11089.33 |
rust (1.37) |
actix-web (1.0) | 7.13 ms | 6.99 ms | 9.11 ms | 11.85 ms | 25.99 ms | 1642.33 |
node (12.1) |
muneem (2.4) | 8.50 ms | 7.54 ms | 12.51 ms | 24.84 ms | 254.90 ms | 7517.67 |
swift (5.0) |
perfect (3.1) | 7.92 ms | 7.83 ms | 10.38 ms | 12.23 ms | 105.24 ms | 2914.00 |
php (7.3) |
zend-expressive (3.2) | 25.77 ms | 7.87 ms | 55.61 ms | 261.00 ms | 669.38 ms | 53992.00 |
php (7.3) |
symfony (4.3) | 25.41 ms | 7.87 ms | 54.10 ms | 262.77 ms | 521.73 ms | 52825.00 |
php (7.3) |
slim (4.2) | 24.35 ms | 7.93 ms | 51.18 ms | 246.77 ms | 539.06 ms | 50069.00 |
php (7.3) |
zend-framework (3.1) | 28.21 ms | 8.10 ms | 55.30 ms | 308.78 ms | 494.67 ms | 61479.33 |
java (8) |
spring-boot (2.1) | 10.52 ms | 8.20 ms | 15.53 ms | 38.32 ms | 444.46 ms | 13639.67 |
node (12.1) |
fastify (2.8) | 9.82 ms | 8.45 ms | 14.17 ms | 25.36 ms | 366.80 ms | 11610.33 |
node (12.1) |
foxify (0.1) | 9.18 ms | 8.51 ms | 13.89 ms | 23.99 ms | 290.24 ms | 9248.67 |
php (7.3) |
lumen (5.8) | 26.69 ms | 8.54 ms | 56.31 ms | 272.77 ms | 490.18 ms | 54802.00 |
scala (2.12) |
http4s (0.18) | 9.98 ms | 8.63 ms | 18.34 ms | 33.55 ms | 260.59 ms | 8476.67 |
node (12.1) |
iotjs-express (0.0) | 9.95 ms | 8.68 ms | 15.18 ms | 25.14 ms | 272.01 ms | 8041.00 |
node (12.1) |
koa (2.8) | 10.75 ms | 8.73 ms | 14.99 ms | 35.26 ms | 478.07 ms | 17779.67 |
python (3.7) |
hug (2.6) | 12.10 ms | 8.96 ms | 22.29 ms | 45.20 ms | 287.84 ms | 10570.67 |
node (12.1) |
express (4.17) | 11.67 ms | 9.11 ms | 17.13 ms | 38.24 ms | 374.76 ms | 13828.67 |
swift (5.0) |
vapor (3.3) | 11.99 ms | 9.41 ms | 16.82 ms | 32.71 ms | 671.70 ms | 24183.33 |
php (7.3) |
laravel (5.8) | 50.62 ms | 9.97 ms | 95.08 ms | 659.83 ms | 1154.32 ms | 131891.33 |
python (3.7) |
blacksheep (0.1) | 10.75 ms | 10.02 ms | 16.88 ms | 21.83 ms | 45.25 ms | 4680.67 |
python (3.7) |
starlette (0.12) | 12.03 ms | 11.76 ms | 17.91 ms | 24.37 ms | 48.38 ms | 4708.33 |
node (12.1) |
restify (8.4) | 12.47 ms | 11.82 ms | 15.23 ms | 29.58 ms | 265.55 ms | 7224.00 |
node (12.1) |
moleculer (0.13) | 19.69 ms | 13.80 ms | 25.43 ms | 176.09 ms | 624.26 ms | 32880.33 |
node (12.1) |
hapi (18.1) | 18.79 ms | 15.58 ms | 27.94 ms | 67.71 ms | 555.69 ms | 20612.33 |
swift (5.0) |
kitura-nio (2.7) | 20.89 ms | 15.72 ms | 27.62 ms | 120.71 ms | 1274.87 ms | 47128.67 |
swift (5.0) |
kitura (2.7) | 18.48 ms | 16.43 ms | 17.22 ms | 31.82 ms | 867.75 ms | 33907.67 |
python (3.7) |
flask (1.1) | 27.71 ms | 17.61 ms | 56.80 ms | 89.06 ms | 312.18 ms | 22729.33 |
python (3.7) |
molten (0.27) | 26.48 ms | 17.75 ms | 53.12 ms | 100.40 ms | 431.71 ms | 22717.00 |
python (3.7) |
fastapi (0.38) | 18.86 ms | 17.91 ms | 25.63 ms | 35.64 ms | 456.49 ms | 11431.33 |
php (7.3) |
swoft (2.0) | 19.07 ms | 18.64 ms | 24.37 ms | 30.55 ms | 87.08 ms | 4060.00 |
crystal (0.29) |
lucky (0.16) | 20.57 ms | 20.43 ms | 22.67 ms | 24.30 ms | 244.52 ms | 6888.33 |
python (3.7) |
aiohttp (3.6) | 24.05 ms | 24.40 ms | 34.60 ms | 47.53 ms | 120.97 ms | 9798.67 |
node (12.1) |
turbo_polka (2.0) | 26.54 ms | 25.39 ms | 27.12 ms | 30.11 ms | 780.36 ms | 23178.33 |
php (7.3) |
imi (1.0) | 26.30 ms | 25.72 ms | 32.27 ms | 38.30 ms | 162.49 ms | 5162.33 |
python (3.7) |
sanic (19.6) | 28.72 ms | 25.76 ms | 49.06 ms | 80.14 ms | 341.13 ms | 17296.67 |
crystal (0.29) |
athena (0.7) | 27.29 ms | 26.01 ms | 35.25 ms | 36.86 ms | 51.24 ms | 4373.00 |
python (3.7) |
bocadillo (0.18) | 29.68 ms | 27.62 ms | 44.90 ms | 67.66 ms | 320.46 ms | 13894.67 |
python (3.7) |
quart (0.1) | 50.85 ms | 49.63 ms | 76.29 ms | 109.71 ms | 180.15 ms | 21157.67 |
python (3.7) |
django (2.2) | 76.10 ms | 51.60 ms | 164.00 ms | 225.32 ms | 542.99 ms | 54910.67 |
python (3.7) |
responder (1.3) | 62.54 ms | 59.23 ms | 85.55 ms | 103.31 ms | 357.41 ms | 18262.00 |
python (3.7) |
masonite (2.2) | 102.21 ms | 66.73 ms | 236.48 ms | 320.99 ms | 638.60 ms | 78186.00 |
python (3.7) |
tornado (5.1) | 67.94 ms | 67.65 ms | 82.00 ms | 90.31 ms | 456.99 ms | 17226.33 |
crystal (0.29) |
onyx (0.5) | 182.59 ms | 182.44 ms | 217.25 ms | 246.22 ms | 277.60 ms | 27481.33 |
1️⃣ (agoo-c) (c)
2️⃣ (sifrr) (node)
3️⃣ (japronto) (python)
4️⃣ (drogon) (cpp)
5️⃣ (rapidoid) (java)
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
