Skip to content

aguerram/web-frameworks

 
 

Which is the fastest?

Build Status Join the chat at https://gitter.im/which_is_the_fastest/Lobby

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
⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️

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

ℹ️ 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 ⚠️

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 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

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

About

Which is the fastest web framework?

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Packages

No packages published

Languages

  • PHP 47.2%
  • Crystal 11.3%
  • Python 6.9%
  • CMake 6.3%
  • Ruby 5.8%
  • Elixir 4.1%
  • Other 18.4%