
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
ℹ️ 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 ⚠️
- Initialize
sqlite database
jobs are either languages (example : crystal) or frameworks (example : router.cr)
bin/neph [job1] [job2] [job3] ...
- Export all results readme
|
Language |
Framework |
Speed (req/s) |
Horizontal scale (parallelism) |
Vertical scale (concurrency) |
| 1 |
javascript (12.13) |
nanoexpress-pro (1.9) |
199 314 |
|
|
| 2 |
javascript (12.13) |
sifrr (0.0) |
196 034 |
|
|
| 3 |
nim (1.0) |
httpbeast (0.2) |
191 208 |
|
|
| 4 |
c (11) |
agoo-c (0.7) |
187 084 |
|
|
| 5 |
javascript (12.13) |
nanoexpress (1.1) |
185 315 |
|
|
| 6 |
go (1.13) |
fasthttp (1.7) |
167 906 |
|
|
| 7 |
java (8) |
rapidoid (5.5) |
165 319 |
|
|
| 8 |
go (1.13) |
fasthttprouter (0.1) |
162 318 |
|
|
| 9 |
go (1.13) |
router (1.6) |
161 414 |
|
|
| 10 |
c (11) |
kore (3.3) |
160 870 |
|
|
| 11 |
go (1.13) |
atreugo (9.0) |
158 847 |
|
|
| 12 |
go (1.13) |
gorouter-fasthttp (4.2) |
157 829 |
|
|
| 13 |
crystal (0.31) |
toro (0.4) |
149 104 |
|
|
| 14 |
crystal (0.31) |
router.cr (0.2) |
147 435 |
|
|
| 15 |
crystal (0.31) |
raze (0.3) |
143 987 |
|
|
| 16 |
crystal (0.31) |
spider-gazelle (2.3) |
143 905 |
|
|
| 17 |
nim (1.0) |
jester (0.4) |
143 895 |
|
|
| 18 |
crystal (0.31) |
kemal (0.26) |
136 534 |
|
|
| 19 |
crystal (0.31) |
amber (0.3) |
124 760 |
|
|
| 20 |
ruby (2.6) |
agoo (2.11) |
123 980 |
|
|
| 21 |
java (8) |
act (1.8) |
120 287 |
|
|
| 22 |
crystal (0.31) |
orion (2.1) |
119 105 |
|
|
| 23 |
php (7.4) |
workerman (3.5) |
112 376 |
|
|
| 24 |
go (1.13) |
rte (0.0) |
108 566 |
|
|
| 25 |
go (1.13) |
gorouter (4.2) |
105 289 |
|
|
| 26 |
go (1.13) |
chi (4.0) |
102 125 |
|
|
| 27 |
csharp (7.3) |
aspnetcore (3.0) |
101 734 |
|
|
| 28 |
go (1.13) |
aero (1.3) |
99 893 |
|
|
| 29 |
go (1.13) |
kami (2.2) |
98 043 |
|
|
| 30 |
go (1.13) |
goroute (0.0) |
97 865 |
|
|
| 31 |
go (1.13) |
violetear (7.0) |
97 359 |
|
|
| 32 |
go (1.13) |
echo (4.1) |
97 090 |
|
|
| 33 |
go (1.13) |
gin (1.5) |
96 504 |
|
|
| 34 |
go (1.13) |
beego (1.12) |
95 097 |
|
|
| 35 |
go (1.13) |
gorilla-mux (1.7) |
94 481 |
|
|
| 36 |
go (1.13) |
webgo (3.0) |
91 399 |
|
|
| 37 |
javascript (12.13) |
polkadot (1.0) |
88 225 |
|
|
| 38 |
javascript (12.13) |
0http (2.2) |
84 654 |
|
|
| 39 |
go (1.13) |
air (0.14) |
84 199 |
|
|
| 40 |
cpp (11) |
drogon (1.0) |
81 887 |
|
|
| 41 |
go (1.13) |
gf (1.1) |
78 601 |
|
|
| 42 |
javascript (12.13) |
restana (4.0) |
78 600 |
|
|
| 43 |
javascript (12.13) |
polka (0.5) |
76 581 |
|
|
| 44 |
swift (5.1) |
perfect (3.1) |
75 394 |
|
|
| 45 |
python (3.8) |
falcon (2.0) |
74 847 |
|
|
| 46 |
javascript (12.13) |
rayo (1.3) |
74 047 |
|
|
| 47 |
javascript (12.13) |
muneem (2.4) |
66 164 |
|
|
| 48 |
kotlin (1.3) |
ktor (1.2) |
65 479 |
|
|
| 49 |
scala (2.12) |
akkahttp (10.1) |
63 531 |
|
|
| 50 |
go (1.13) |
mars (1.0) |
62 639 |
|
|
| 51 |
javascript (12.13) |
foxify (0.1) |
62 006 |
|
|
| 52 |
php (7.4) |
one (1.9) |
60 924 |
|
|
| 53 |
python (3.8) |
bottle (0.12) |
60 465 |
|
|
| 54 |
java (8) |
javalin (3.5) |
59 195 |
|
|
| 55 |
javascript (12.13) |
koa (2.11) |
55 524 |
|
|
| 56 |
ruby (2.6) |
plezi (0.16) |
54 277 |
|
|
| 57 |
python (3.8) |
asgineer (0.7) |
54 226 |
|
|
| 58 |
javascript (12.13) |
iotjs-express (0.0) |
53 987 |
|
|
| 59 |
php (7.4) |
phalcon (4.0) |
52 666 |
|
|
| 60 |
clojure (1.10) |
coast (1.0) |
52 664 |
|
|
| 61 |
javascript (12.13) |
fastify (2.11) |
52 161 |
|
|
| 62 |
java (8) |
spring-boot (2.1) |
51 546 |
|
|
| 63 |
php (7.4) |
ubiquity (2.3) |
51 512 |
|
|
| 64 |
python (3.8) |
blacksheep (0.2) |
51 511 |
|
|
| 65 |
rust (1.39) |
gotham (0.4) |
50 987 |
|
|
| 66 |
scala (2.12) |
http4s (0.18) |
49 126 |
|
|
| 67 |
swift (5.1) |
vapor (3.3) |
49 084 |
|
|
| 68 |
javascript (12.13) |
express (4.17) |
49 040 |
|
|
| 69 |
python (3.8) |
pyramid (1.1) |
48 650 |
|
|
| 70 |
php (7.4) |
hyperf (1.0) |
48 252 |
|
|
| 71 |
python (3.8) |
hug (2.6) |
47 882 |
|
|
| 72 |
swift (5.1) |
kitura (2.8) |
47 352 |
|
|
| 73 |
swift (5.1) |
kitura-nio (2.8) |
46 514 |
|
|
| 74 |
php (7.4) |
hamlet (3.2) |
46 305 |
|
|
| 75 |
python (3.8) |
starlette (0.13) |
45 532 |
|
|
| 76 |
php (7.4) |
one-fpm (1.9) |
44 627 |
|
|
| 77 |
php (7.4) |
basicphp (0.9) |
44 229 |
|
|
| 78 |
php (7.4) |
slim (4.4) |
43 416 |
|
|
| 79 |
php (7.4) |
lumen (6.3) |
42 974 |
|
|
| 80 |
php (7.4) |
imi (1.0) |
42 657 |
|
|
| 81 |
php (7.4) |
zend-framework (3.1) |
42 137 |
|
|
| 82 |
php (7.4) |
zend-expressive (3.2) |
42 106 |
|
|
| 83 |
php (7.4) |
symfony (4.3) |
41 984 |
|
|
| 84 |
php (7.4) |
sw-fw-less (preview) |
40 791 |
|
|
| 85 |
javascript (12.13) |
restify (8.5) |
40 222 |
|
|
| 86 |
ruby (2.6) |
syro (3.1) |
38 249 |
|
|
| 87 |
cpp (11) |
evhtp (1.2) |
38 110 |
|
|
| 88 |
ruby (2.6) |
roda (3.27) |
36 983 |
|
|
| 89 |
php (7.4) |
laravel (6.9) |
35 975 |
|
|
| 90 |
php (7.4) |
swoft (2.0) |
35 943 |
|
|
| 91 |
java (8) |
micronaut (1.2) |
33 418 |
|
|
| 92 |
ruby (2.6) |
cuba (3.9) |
33 253 |
|
|
| 93 |
javascript (12.13) |
hapi (18.4) |
32 443 |
|
|
| 94 |
fsharp (7.3) |
suave (2.5) |
29 976 |
|
|
| 95 |
python (3.8) |
fastapi (0.45) |
29 662 |
|
|
| 96 |
rust (1.39) |
nickel (0.11) |
29 596 |
|
|
| 97 |
python (3.8) |
responder (2.0) |
29 263 |
|
|
| 98 |
javascript (12.13) |
moleculer (0.13) |
28 149 |
|
|
| 99 |
ruby (2.6) |
rack-routing (0.0) |
27 813 |
|
|
| 100 |
python (3.8) |
molten (0.27) |
26 485 |
|
|
| 101 |
python (3.8) |
clastic (19.9) |
26 062 |
|
|
| 102 |
python (3.8) |
aiohttp (3.6) |
25 980 |
|
|
| 103 |
java (8) |
spring-framework (5.2) |
25 763 |
|
|
| 104 |
python (3.8) |
flask (1.1) |
24 881 |
|
|
| 105 |
crystal (0.31) |
athena (0.7) |
24 002 |
|
|
| 106 |
ruby (2.6) |
camping (2.1) |
22 673 |
|
|
| 107 |
crystal (0.31) |
lucky (0.18) |
22 492 |
|
|
| 108 |
javascript (12.13) |
turbo_polka (0.3) |
22 174 |
|
|
| 109 |
python (3.8) |
bocadillo (0.18) |
20 624 |
|
|
| 110 |
ruby (2.6) |
flame (4.18) |
20 299 |
|
|
| 111 |
python (3.8) |
sanic (19.9) |
20 141 |
|
|
| 112 |
ruby (2.6) |
hanami (1.3) |
17 738 |
|
|
| 113 |
php (7.4) |
spiral (2.4) |
17 376 |
|
|
| 114 |
rust (1.39) |
iron (0.6) |
15 962 |
|
|
| 115 |
ruby (2.6) |
sinatra (2.0) |
13 746 |
|
|
| 116 |
ruby (2.6) |
grape (1.2) |
12 816 |
|
|
| 117 |
swift (5.1) |
swifter (1.4) |
11 941 |
|
|
| 118 |
python (3.8) |
quart (0.10) |
11 385 |
|
|
| 119 |
python (3.8) |
django (3.0) |
10 439 |
|
|
| 120 |
go (1.13) |
gramework (1.7) |
10 077 |
|
|
| 121 |
python (3.8) |
tornado (6.0) |
9 919 |
|
|
| 122 |
python (3.8) |
cherrypy (18.5) |
9 256 |
|
|
| 123 |
python (3.8) |
masonite (2.2) |
6 868 |
|
|
| 124 |
crystal (0.31) |
onyx (0.5) |
4 886 |
|
|
| 125 |
ruby (2.6) |
rails (6.0) |
3 581 |
|
|
| 126 |
julia (1.3) |
merly (0.2) |
3 297 |
|
|
| 127 |
python (3.8) |
cyclone (1.3) |
2 312 |
|
|
| 128 |
python (3.8) |
klein (19.6) |
1 513 |
|
|
| 129 |
python (3.8) |
nameko (2.12) |
1 421 |
|
|
| 130 |
perl (5.3) |
dancer2 (2.0) |
1 165 |
|
|
In any way you want ...
- Request a framework addition
- Report a bug (on any implementation)
- Suggest an idea
- ...
Any kind of idea is ❤️