Which is the fastest?
This project aims to be a load benchmarking suite, no more, no less
Measuring response times (routing times) for each framework (middleware).
Additional purposes :
- Helping decide between languages, depending on use case
- Learning languages, best practices, devops culture ...
- Having fun
❤️
Requirements
- Crystal as
built-in
tools are made in this language - Docker as frameworks are
isolated
into containers - wrk as benchmarking tool,
>= 4.1.0
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
Usage
- Install all dependencies
shards install
- Build internal tools
shards build
- Initialize
sqlite
database
bin/db init
- Make configuration
bin/make config
- Build containers
jobs are either languages (example : crystal) or frameworks (example : router.cr)
bin/neph [job1] [job2] [job3] ...
- Export all results readme
bin/db to_readme
Results
Language | Framework | Speed (req/s ) |
Horizontal scale (parallelism) | Vertical scale (concurrency) | |
---|---|---|---|---|---|
1 | nim (1.0) | httpbeast (0.2) | 191 573 | ||
2 | c (11) | agoo-c (0.7) | 185 350 | ||
3 | javascript (12.13) | nanoexpress-pro (1.8) | 170 223 | ||
4 | c (11) | kore (3.3) | 159 399 | ||
5 | nim (1.0) | jester (0.4) | 144 446 | ||
6 | go (1.13) | fasthttprouter (0.1) | 140 942 | ||
7 | go (1.13) | router (1.6) | 140 529 | ||
8 | javascript (12.13) | nanoexpress (1.1) | 137 424 | ||
9 | go (1.13) | fasthttp (1.7) | 136 656 | ||
10 | crystal (0.31) | router.cr (0.2) | 133 660 | ||
11 | go (1.13) | atreugo (9.0) | 132 875 | ||
12 | go (1.13) | gorouter-fasthttp (4.2) | 131 785 | ||
13 | crystal (0.31) | toro (0.4) | 129 067 | ||
14 | crystal (0.31) | raze (0.3) | 128 026 | ||
15 | crystal (0.31) | spider-gazelle (2.3) | 126 994 | ||
16 | crystal (0.31) | kemal (0.26) | 119 065 | ||
17 | java (8) | rapidoid (5.5) | 117 007 | ||
18 | ruby (2.6) | agoo (2.11) | 110 450 | ||
19 | crystal (0.31) | amber (0.3) | 107 519 | ||
20 | javascript (12.13) | sifrr (0.0) | 106 938 | ||
21 | crystal (0.31) | orion (2.1) | 103 818 | ||
22 | go (1.13) | rte (0.0) | 94 423 | ||
23 | php (7.4) | workerman (3.5) | 91 373 | ||
24 | csharp (7.3) | aspnetcore (3.0) | 87 841 | ||
25 | go (1.13) | gorouter (4.2) | 87 461 | ||
26 | go (1.13) | chi (4.0) | 84 938 | ||
27 | go (1.13) | violetear (7.0) | 84 756 | ||
28 | go (1.13) | aero (1.3) | 84 677 | ||
29 | go (1.13) | goroute (0.0) | 84 295 | ||
30 | go (1.13) | gin (1.5) | 83 432 | ||
31 | go (1.13) | gorilla-mux (1.7) | 81 856 | ||
32 | go (1.13) | beego (1.12) | 81 767 | ||
33 | go (1.13) | kami (2.2) | 81 423 | ||
34 | go (1.13) | echo (4.1) | 78 414 | ||
35 | go (1.13) | webgo (3.0) | 76 699 | ||
36 | cpp (11) | drogon (1.0) | 74 221 | ||
37 | go (1.13) | air (0.14) | 68 999 | ||
38 | go (1.13) | gf (1.1) | 66 661 | ||
39 | javascript (12.13) | restana (4.0) | 66 291 | ||
40 | python (3.8) | falcon (2.0) | 62 783 | ||
41 | scala (2.12) | akkahttp (10.1) | 56 377 | ||
42 | kotlin (1.3) | ktor (1.2) | 54 012 | ||
43 | javascript (12.13) | muneem (2.4) | 53 833 | ||
44 | go (1.13) | mars (1.0) | 52 351 | ||
45 | python (3.8) | bottle (0.12) | 50 961 | ||
46 | php (7.4) | one (1.9) | 50 759 | ||
47 | rust (1.4) | gotham (0.4) | 49 688 | ||
48 | clojure (1.10) | coast (1.0) | 49 682 | ||
49 | ruby (2.6) | plezi (0.16) | 47 741 | ||
50 | python (3.8) | asgineer (0.7) | 47 689 | ||
51 | javascript (12.13) | polkadot (1.0) | 47 212 | ||
52 | java (8) | javalin (3.5) | 46 660 | ||
53 | java (8) | act (1.8) | 44 981 | ||
54 | javascript (12.13) | fastify (2.11) | 44 978 | ||
55 | php (7.4) | phalcon (4.0) | 44 379 | ||
56 | php (7.4) | hyperf (1.0) | 42 658 | ||
57 | php (7.4) | ubiquity (2.3) | 41 912 | ||
58 | python (3.8) | blacksheep (0.2) | 41 253 | ||
59 | javascript (12.13) | rayo (1.3) | 40 820 | ||
60 | cpp (11) | evhtp (1.2) | 40 116 | ||
61 | scala (2.12) | http4s (0.18) | 39 782 | ||
62 | python (3.8) | pyramid (1.1) | 38 499 | ||
63 | python (3.8) | hug (2.6) | 38 231 | ||
64 | php (7.4) | lumen (6.3) | 37 897 | ||
65 | php (7.4) | slim (4.4) | 37 481 | ||
66 | python (3.8) | starlette (0.13) | 37 341 | ||
67 | ruby (2.6) | syro (3.1) | 35 685 | ||
68 | php (7.4) | one-fpm (1.9) | 35 503 | ||
69 | php (7.4) | basicphp (0.9) | 35 214 | ||
70 | php (7.4) | zend-expressive (3.2) | 34 750 | ||
71 | php (7.4) | imi (1.0) | 34 586 | ||
72 | php (7.4) | zend-framework (3.1) | 34 495 | ||
73 | php (7.4) | hamlet (3.2) | 34 298 | ||
74 | ruby (2.6) | roda (3.27) | 34 070 | ||
75 | swift (5.1) | perfect (3.1) | 33 891 | ||
76 | php (7.4) | symfony (4.3) | 32 688 | ||
77 | rust (1.4) | nickel (0.11) | 32 092 | ||
78 | php (7.4) | sw-fw-less (preview) | 31 884 | ||
79 | ruby (2.6) | cuba (3.9) | 31 455 | ||
80 | php (7.4) | laravel (6.9) | 31 130 | ||
81 | php (7.4) | swoft (2.0) | 30 205 | ||
82 | javascript (12.13) | express (4.17) | 29 741 | ||
83 | javascript (12.13) | koa (2.11) | 26 863 | ||
84 | ruby (2.6) | rack-routing (0.0) | 26 834 | ||
85 | javascript (12.13) | 0http (2.2) | 26 643 | ||
86 | swift (5.1) | vapor (3.3) | 26 545 | ||
87 | python (3.8) | fastapi (0.45) | 24 720 | ||
88 | javascript (12.13) | polka (0.5) | 24 225 | ||
89 | java (8) | spring-boot (2.1) | 23 774 | ||
90 | python (3.8) | responder (2.0) | 22 968 | ||
91 | crystal (0.31) | lucky (0.18) | 22 457 | ||
92 | python (3.8) | molten (0.27) | 21 882 | ||
93 | ruby (2.6) | camping (2.1) | 21 532 | ||
94 | python (3.8) | aiohttp (3.6) | 21 473 | ||
95 | python (3.8) | clastic (19.9) | 21 446 | ||
96 | python (3.8) | flask (1.1) | 20 443 | ||
97 | crystal (0.31) | athena (0.7) | 19 763 | ||
98 | ruby (2.6) | flame (4.18) | 19 121 | ||
99 | python (3.8) | bocadillo (0.18) | 17 601 | ||
100 | ruby (2.6) | hanami (1.3) | 17 205 | ||
101 | rust (1.4) | iron (0.6) | 17 064 | ||
102 | javascript (12.13) | iotjs-express (0.0) | 16 985 | ||
103 | javascript (12.13) | restify (8.5) | 16 738 | ||
104 | swift (5.1) | kitura (2.8) | 16 396 | ||
105 | swift (5.1) | kitura-nio (2.8) | 15 781 | ||
106 | ruby (2.6) | sinatra (2.0) | 15 334 | ||
107 | python (3.8) | sanic (19.9) | 15 092 | ||
108 | java (8) | micronaut (1.2) | 14 755 | ||
109 | java (8) | spring-framework (5.2) | 14 116 | ||
110 | php (7.4) | spiral (2.4) | 14 107 | ||
111 | javascript (12.13) | hapi (18.4) | 12 889 | ||
112 | javascript (12.13) | moleculer (0.13) | 12 728 | ||
113 | ruby (2.6) | grape (1.2) | 11 839 | ||
114 | javascript (12.13) | turbo_polka (0.3) | 10 462 | ||
115 | python (3.8) | quart (0.10) | 10 015 | ||
116 | go (1.13) | gramework (1.7) | 9 038 | ||
117 | python (3.8) | tornado (6.0) | 8 625 | ||
118 | fsharp (7.3) | suave (2.5) | 8 551 | ||
119 | python (3.8) | django (3.0) | 8 053 | ||
120 | crystal (0.31) | onyx (0.5) | 7 568 | ||
121 | python (3.8) | cherrypy (18.5) | 7 372 | ||
122 | python (3.8) | masonite (2.2) | 5 869 | ||
123 | ruby (2.6) | rails (6.0) | 3 368 | ||
124 | swift (5.1) | swifter (1.4) | 3 305 | ||
125 | julia (1.3) | merly (0.2) | 3 274 | ||
126 | python (3.8) | cyclone (1.3) | 2 211 | ||
127 | python (3.8) | klein (19.6) | 1 452 | ||
128 | python (3.8) | nameko (2.12) | 1 241 | ||
129 | javascript (12.13) | foxify (0.1) | 1 019 | ||
130 | perl (5.30) | dancer2 (2.0) | 896 |
How to contribute ?
In any way you want ...
- Request a framework addition
- Report a bug (on any implementation)
- Suggest an idea
- ...
Any kind of idea is
Contributors
- Taichiro Suzuki - Author | Maintainer
- OvermindDL1 - Maintainer
- Marwan Rabbâa - Maintainer