
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 between languages, depending on use case
- Learning languages, best practices, devops culture ...
- Having fun ❤️
- Crystal as
built-in tools are made in this language
- Docker as frameworks are
isolated into containers
- wrk as benchmarking tool,
>= 4.1.0
- postgresql to store data,
>= 10
ℹ️ you need wrk stable
git clone --branch 4.1.0 https://github.com/wg/wrk
⚠️ docker is used for development purpose, production results will be computed on DigitalOcean ⚠️
- Create and initialize the database
createdb -U postgres benchmark
psql -U postgres -d benchmark < .ci/dump.sql
export DATABASE_URL="postgresql://postgres@localhost/benchmark"
jobs are either languages (example : crystal) or frameworks (example : router.cr)
bin/neph [job1] [job2] [job3] ...
- Export all results readme
ℹ️ Updated on 2020-01-31 ℹ️
Benchmarking with wrk
- Threads : 128
- Connections : 128
- Duration : 10 (seconds)
|
Language |
Framework |
Speed (req/s) |
Horizontal scale (parallelism) |
Vertical scale (concurrency) |
| 1 |
nim (1.0) |
httpbeast (0.2) |
166 221 |
|
|
| 2 |
javascript (13.7) |
sifrr (0.0) |
163 590 |
|
|
| 3 |
javascript (13.7) |
nanoexpress (1.1) |
158 114 |
|
|
| 4 |
java (8) |
rapidoid (5.5) |
142 882 |
|
|
| 5 |
crystal (0.31) |
router.cr (0.2) |
142 813 |
|
|
| 6 |
crystal (0.31) |
toro (0.4) |
140 181 |
|
|
| 7 |
crystal (0.31) |
raze (0.3) |
138 920 |
|
|
| 8 |
crystal (0.31) |
spider-gazelle (2.3) |
135 498 |
|
|
| 9 |
nim (1.0) |
jester (0.4) |
132 496 |
|
|
| 10 |
go (1.13) |
fasthttp (1.8) |
131 711 |
|
|
| 11 |
crystal (0.31) |
kemal (0.26) |
131 348 |
|
|
| 12 |
go (1.13) |
fasthttprouter (0.1) |
127 798 |
|
|
| 13 |
go (1.13) |
router (0.6) |
127 760 |
|
|
| 14 |
crystal (0.31) |
grip (0.26) |
127 575 |
|
|
| 15 |
go (1.13) |
atreugo (10.3) |
127 135 |
|
|
| 16 |
go (1.13) |
fiber (1.0) |
125 622 |
|
|
| 17 |
crystal (0.31) |
amber (0.3) |
125 602 |
|
|
| 18 |
go (1.13) |
gorouter-fasthttp (4.4) |
123 940 |
|
|
| 19 |
c (11) |
agoo-c (0.7) |
123 085 |
|
|
| 20 |
crystal (0.31) |
orion (2.1) |
121 881 |
|
|
| 21 |
php (7.4) |
workerman (3.5) |
119 334 |
|
|
| 22 |
java (8) |
act (1.8) |
101 954 |
|
|
| 23 |
ruby (2.6) |
agoo (2.12) |
100 811 |
|
|
| 24 |
go (1.13) |
rte (0.0) |
92 434 |
|
|
| 25 |
go (1.13) |
gorouter (4.4) |
87 009 |
|
|
| 26 |
go (1.13) |
chi (4.0) |
86 879 |
|
|
| 27 |
javascript (13.7) |
polkadot (1.0) |
86 410 |
|
|
| 28 |
csharp (7.3) |
aspnetcore (3.0) |
85 906 |
|
|
| 29 |
go (1.13) |
kami (2.2) |
85 869 |
|
|
| 30 |
go (1.13) |
aero (1.3) |
85 413 |
|
|
| 31 |
go (1.13) |
violetear (7.0) |
84 011 |
|
|
| 32 |
go (1.13) |
echo (4.1) |
83 631 |
|
|
| 33 |
go (1.13) |
goroute (0.0) |
83 197 |
|
|
| 34 |
cpp (11) |
drogon (1.0) |
82 977 |
|
|
| 35 |
javascript (13.7) |
0http (2.2) |
82 167 |
|
|
| 36 |
go (1.13) |
gorilla-mux (1.7) |
81 559 |
|
|
| 37 |
go (1.13) |
beego (1.12) |
80 798 |
|
|
| 38 |
go (1.13) |
gin (1.5) |
79 792 |
|
|
| 39 |
javascript (13.7) |
restana (4.0) |
78 664 |
|
|
| 40 |
go (1.13) |
webgo (3.0) |
78 577 |
|
|
| 41 |
javascript (13.7) |
polka (0.5) |
75 697 |
|
|
| 42 |
swift (5.1) |
perfect (3.1) |
74 197 |
|
|
| 43 |
javascript (13.7) |
rayo (1.3) |
73 962 |
|
|
| 44 |
go (1.13) |
air (0.14) |
70 929 |
|
|
| 45 |
python (3.8) |
falcon (2.0) |
69 881 |
|
|
| 46 |
go (1.13) |
gf (1.11) |
67 876 |
|
|
| 47 |
c (11) |
kore (3.3) |
65 860 |
|
|
| 48 |
javascript (13.7) |
muneem (2.4) |
65 529 |
|
|
| 49 |
javascript (13.7) |
fastify (2.11) |
60 814 |
|
|
| 50 |
javascript (13.7) |
foxify (0.1) |
60 562 |
|
|
| 51 |
kotlin (1.3) |
ktor (1.2) |
58 329 |
|
|
| 52 |
php (7.4) |
one (1.9) |
58 060 |
|
|
| 53 |
java (8) |
javalin (3.5) |
58 015 |
|
|
| 54 |
python (3.8) |
bottle (0.12) |
57 767 |
|
|
| 55 |
scala (2.12) |
akkahttp (10.1) |
56 140 |
|
|
| 56 |
javascript (13.7) |
koa (2.11) |
54 454 |
|
|
| 57 |
go (1.13) |
mars (1.0) |
54 382 |
|
|
| 58 |
python (3.8) |
asgineer (0.7) |
54 061 |
|
|
| 59 |
clojure (1.10) |
coast (1.0) |
53 775 |
|
|
| 60 |
javascript (13.7) |
iotjs-express (0.0) |
53 327 |
|
|
| 61 |
python (3.8) |
blacksheep (0.2) |
49 434 |
|
|
| 62 |
java (8) |
spring-boot (2.1) |
49 367 |
|
|
| 63 |
swift (5.1) |
vapor (3.3) |
49 084 |
|
|
| 64 |
swift (5.1) |
kitura-nio (2.8) |
49 029 |
|
|
| 65 |
swift (5.1) |
kitura (2.8) |
48 556 |
|
|
| 66 |
javascript (13.7) |
express (4.17) |
47 564 |
|
|
| 67 |
php (7.4) |
hyperf (1.0) |
47 174 |
|
|
| 68 |
python (3.8) |
pyramid (1.1) |
46 588 |
|
|
| 69 |
rust (1.41) |
nickel (0.11) |
46 267 |
|
|
| 70 |
java (8) |
micronaut (1.2) |
46 249 |
|
|
| 71 |
python (3.8) |
hug (2.6) |
45 945 |
|
|
| 72 |
python (3.8) |
starlette (0.13) |
45 938 |
|
|
| 73 |
rust (1.41) |
gotham (0.4) |
44 185 |
|
|
| 74 |
cpp (11) |
evhtp (1.2) |
44 071 |
|
|
| 75 |
php (7.4) |
imi (1.0) |
41 351 |
|
|
| 76 |
php (7.4) |
sw-fw-less (preview) |
40 826 |
|
|
| 77 |
scala (2.12) |
http4s (0.18) |
39 620 |
|
|
| 78 |
ruby (2.6) |
roda (3.28) |
39 077 |
|
|
| 79 |
ruby (2.6) |
syro (3.1) |
38 705 |
|
|
| 80 |
javascript (13.7) |
hapi (19.0) |
38 015 |
|
|
| 81 |
javascript (13.7) |
restify (8.5) |
36 301 |
|
|
| 82 |
php (7.4) |
swoft (2.0) |
35 322 |
|
|
| 83 |
ruby (2.6) |
cuba (3.9) |
34 858 |
|
|
| 84 |
python (3.8) |
responder (2.0) |
30 378 |
|
|
| 85 |
ruby (2.6) |
rack-routing (0.0) |
29 324 |
|
|
| 86 |
python (3.8) |
fastapi (0.47) |
29 083 |
|
|
| 87 |
javascript (13.7) |
moleculer (0.13) |
28 822 |
|
|
| 88 |
crystal (0.31) |
lucky (0.18) |
27 195 |
|
|
| 89 |
python (3.8) |
aiohttp (3.6) |
26 904 |
|
|
| 90 |
fsharp (7.3) |
suave (2.5) |
26 727 |
|
|
| 91 |
python (3.8) |
molten (0.27) |
26 426 |
|
|
| 92 |
ruby (2.6) |
camping (2.1) |
26 064 |
|
|
| 93 |
python (3.8) |
clastic (19.9) |
25 805 |
|
|
| 94 |
python (3.8) |
flask (1.1) |
24 187 |
|
|
| 95 |
python (3.8) |
masonite (2.3) |
23 688 |
|
|
| 96 |
java (8) |
spring-framework (5.2) |
23 576 |
|
|
| 97 |
crystal (0.31) |
athena (0.7) |
23 160 |
|
|
| 98 |
javascript (13.7) |
turbo_polka (0.3) |
22 711 |
|
|
| 99 |
ruby (2.6) |
flame (4.18) |
22 378 |
|
|
| 100 |
python (3.8) |
sanic (19.12) |
21 409 |
|
|
| 101 |
ruby (2.6) |
plezi (0.16) |
20 553 |
|
|
| 102 |
python (3.8) |
emmett (2.0.0a1) |
20 536 |
|
|
| 103 |
rust (1.41) |
iron (0.6) |
18 681 |
|
|
| 104 |
ruby (2.6) |
hanami (1.3) |
18 028 |
|
|
| 105 |
php (7.4) |
spiral (2.4) |
17 145 |
|
|
| 106 |
ruby (2.6) |
sinatra (2.0) |
16 341 |
|
|
| 107 |
python (3.8) |
quart (0.10) |
13 328 |
|
|
| 108 |
ruby (2.6) |
grape (1.3) |
13 099 |
|
|
| 109 |
swift (5.1) |
swifter (1.4) |
11 001 |
|
|
| 110 |
python (3.8) |
tornado (6.0) |
10 438 |
|
|
| 111 |
go (1.13) |
gramework (1.7) |
10 051 |
|
|
| 112 |
python (3.8) |
cherrypy (18.5) |
9 250 |
|
|
| 113 |
python (3.8) |
django (3.0) |
8 989 |
|
|
| 114 |
php (7.4) |
ubiquity (2.3) |
8 866 |
|
|
| 115 |
php (7.4) |
one-fpm (1.9) |
7 730 |
|
|
| 116 |
php (7.4) |
phalcon (4.0) |
7 305 |
|
|
| 117 |
php (7.4) |
hamlet (3.2) |
7 106 |
|
|
| 118 |
crystal (0.31) |
onyx (0.5) |
4 921 |
|
|
| 119 |
php (7.4) |
slim (4.4) |
4 500 |
|
|
| 120 |
julia (1.3) |
merly (0.2) |
4 439 |
|
|
| 121 |
php (7.4) |
lumen (6.3) |
4 194 |
|
|
| 122 |
ruby (2.6) |
rails (6.0) |
3 585 |
|
|
| 123 |
php (7.4) |
zend-expressive (3.2) |
3 483 |
|
|
| 124 |
php (7.4) |
symfony (4.3) |
3 405 |
|
|
| 125 |
perl (5.3) |
dancer2 (2.0) |
3 303 |
|
|
| 126 |
python (3.8) |
cyclone (1.3) |
2 394 |
|
|
| 127 |
php (7.4) |
zend-framework (3.1) |
1 889 |
|
|
| 128 |
python (3.8) |
nameko (2.12) |
1 544 |
|
|
| 129 |
python (3.8) |
klein (19.6) |
1 509 |
|
|
| 130 |
php (7.4) |
basicphp (0.9) |
1 330 |
|
|
| 131 |
php (7.4) |
laravel (6.12) |
408 |
|
|
In any way you want ...
- Request a framework addition
- Report a bug (on any implementation)
- Suggest an idea
- ...
Any kind of idea is ❤️