Which is the fastest web framework?
waghanza and Marwan Rabbâa Act 1.8.12 (#641)
* Fix responder (temporary fix) (#606)

* use <master> branch for respondfer -> temporary fix

* strict contraint for gunicorn on responder

* run on the latest python version available in docker

* no need of <EmptyString> class -> has been fixed on responder

* specify header -> we do not want json

* exit unmodified builds

* Bump act-starter-parent from 1.8.11.0 to 1.8.12.0 in /java/act

Bumps [act-starter-parent](https://github.com/actframework/act-starters) from 1.8.11.0 to 1.8.12.0.
- [Release notes](https://github.com/actframework/act-starters/releases)
- [Changelog](https://github.com/actframework/act-starters/blob/master/CHANGELOG.md)
- [Commits](actframework/act-starters@act-starters-1.8.11.0...act-starters-1.8.12.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
Latest commit 0439be9 Nov 21, 2018
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.ci Update to node 11 (#608) Nov 11, 2018
.github/ISSUE_TEMPLATE remove old submission template Sep 3, 2018
c Agoo c (#626) Nov 15, 2018
cpp/evhtp Pin all containers (#444) Oct 20, 2018
crystal Update to crystal 0.27.0 (#558) Nov 6, 2018
csharp Updating csharp scenario Oct 5, 2018
elixir Update plug requirement from ~> 1.6.1 to ~> 1.7.1 in /elixir/plug (#511) Oct 29, 2018
go Muxie 1.0.6 (#640) Nov 20, 2018
java/act Act 1.8.12 (#641) Nov 21, 2018
nim Pin all containers (#444) Oct 20, 2018
node Introduce restana (#623) Nov 13, 2018
objc Gitignore (#196) May 4, 2018
php Add lumen (#556) Nov 5, 2018
python Starlette 0.8.5 (#639) Nov 20, 2018
ruby Roda 3.14 (#636) Nov 19, 2018
rust Add Gotham benchmarks (#533) Oct 30, 2018
scala Pin all containers (#444) Oct 20, 2018
spec clarify spec message (#425) Oct 10, 2018
swift upgrade vapor from 3.0 to 3.1 (#535) Oct 30, 2018
tools Pin all containers (#444) Oct 20, 2018
.ebert.yml Apply fixes from StyleCI (#504) Oct 28, 2018
.gitignore Add license (#424) Oct 10, 2018
.jshintrc Introduce restana (#623) Nov 13, 2018
.travis.yml Agoo c (#626) Nov 15, 2018
.yamllint Lint yaml (#166) Mar 17, 2018
.zappr.yaml Configure Zappr (#497) Oct 28, 2018
CODE_OF_CONDUCT.md Code of conduct (#358) Sep 18, 2018
CONTRIBUTING.md Clarify readme (#230) Jun 29, 2018
FRAMEWORKS.yml Update iris to 11.1 (#635) Nov 19, 2018
LICENSE Add license (#424) Oct 10, 2018
PULL_REQUEST_TEMPLATE.md PR template (#437) Oct 19, 2018
README.md Act 1.8.12 (#641) Nov 21, 2018
neph.yaml Agoo c (#626) Nov 15, 2018
shard.yml Multiple jobs (#602) Nov 11, 2018

README.md

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

⚠️ docker is used for development purpose, production results will be computed on DigitalOcean ⚠️

Usage

  • Install all dependencies
shards install
  • Build internal tools
shards build
  • 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]

Results

Last update: 2018-11-21

OS: Linux (version: 4.18.18-200.fc28.x86_64, arch: x86_64)
CPU Cores: 8

Latency

Ranking (top 5)

1️⃣ nickel (rust)

2️⃣ laravel (php)

3️⃣ symfony (php)

4️⃣ iron (rust)

5️⃣ lumen (php)

Full table

Language (Runtime) Framework (Middleware) Average 50th percentile 90th percentile 99th percentile 99.9th percentile Standard deviation
rust (1.30) nickel (0.10) 0.08 ms 0.08 ms 0.12 ms 0.16 ms 1.54 ms 30.67
php (7.2) laravel (5.7) 140.74 ms 0.43 ms 336.53 ms 2672.58 ms 6919.43 ms 488553.33
php (7.2) symfony (4.1) 164.04 ms 0.44 ms 276.72 ms 3710.15 ms 7365.62 ms 640257.33
rust (1.30) iron (0.6) 0.48 ms 0.46 ms 0.82 ms 1.18 ms 13.04 ms 277.33
php (7.2) lumen (5.7) 207.13 ms 0.48 ms 328.83 ms 5016.93 ms 7603.25 ms 801531.00
ruby (2.5) rack-routing (0.0) 5.53 ms 1.17 ms 16.35 ms 46.27 ms 138.10 ms 9671.33
php (7.2) slim (3.11) 169.21 ms 1.40 ms 323.12 ms 3660.61 ms 6393.84 ms 609894.67
ruby (2.5) roda (3.14) 4.40 ms 1.40 ms 12.44 ms 34.76 ms 111.42 ms 7252.67
ruby (2.5) hanami (1.3) 8.87 ms 1.69 ms 26.70 ms 71.14 ms 196.24 ms 15055.00
rust (nightly) rocket (0.3) 205.58 ms 2.10 ms 200.22 ms 4689.37 ms 6595.33 ms 832894.67
python (3.6) japronto (0.1) 3.53 ms 2.66 ms 7.23 ms 16.10 ms 34.59 ms 3395.00
rust (1.30) actix-web (0.7) 3.65 ms 2.90 ms 6.91 ms 14.45 ms 36.14 ms 2955.33
ruby (2.5) sinatra (2.0) 10.01 ms 3.25 ms 29.05 ms 71.68 ms 200.17 ms 15346.67
python (3.6) vibora (0.0) 4.65 ms 3.62 ms 9.37 ms 17.43 ms 40.40 ms 3772.33
ruby (2.5) flame (4.18) 8.38 ms 3.90 ms 22.67 ms 51.99 ms 138.68 ms 11300.00
go (1.11) fasthttprouter (0.1) 4.40 ms 4.09 ms 6.85 ms 14.08 ms 54.61 ms 2628.67
nim (0.19) jester (0.4) 4.71 ms 4.19 ms 7.33 ms 13.38 ms 44.50 ms 2613.33
cpp (11.0) evhtp (1.2) 3.92 ms 4.29 ms 5.68 ms 9.95 ms 61.10 ms 1991.33
crystal (0.27) spider-gazelle (1.1) 4.96 ms 4.53 ms 8.89 ms 16.38 ms 34.47 ms 3186.33
rust (1.30) gotham (0.3) 5.48 ms 4.99 ms 10.26 ms 17.52 ms 165.70 ms 5199.33
ruby (2.5) agoo (2.5) 7.69 ms 5.49 ms 14.44 ms 48.14 ms 124.78 ms 9160.67
c (99) kore (3.1) 8.47 ms 5.91 ms 10.07 ms 70.89 ms 656.03 ms 28355.33
csharp (7.3) aspnetcore (2.1) 7.09 ms 6.30 ms 10.15 ms 19.80 ms 286.27 ms 6376.67
go (1.11) muxie (1.0) 8.02 ms 6.79 ms 12.22 ms 25.85 ms 187.11 ms 7131.00
go (1.11) iris (11.1) 8.20 ms 7.07 ms 12.27 ms 25.45 ms 242.21 ms 7246.00
nim (0.19) mofuw (2.0) 7.83 ms 7.08 ms 11.18 ms 27.93 ms 80.03 ms 4561.67
java (8) act (1.8) 7.68 ms 7.21 ms 11.93 ms 22.53 ms 129.19 ms 4784.67
go (1.11) chi (3.3) 8.51 ms 7.46 ms 13.34 ms 27.23 ms 168.12 ms 5423.33
c (11) agoo-c (0.1) 8.10 ms 7.99 ms 10.57 ms 13.44 ms 30.49 ms 1860.33
go (1.11) echo (3.3) 9.05 ms 8.02 ms 14.12 ms 29.84 ms 169.77 ms 6139.67
go (1.11) gin (1.3) 8.98 ms 8.08 ms 14.02 ms 28.15 ms 119.51 ms 5421.00
go (1.11) gorilla-mux (1.6) 9.12 ms 8.17 ms 14.29 ms 28.56 ms 220.05 ms 5857.67
go (1.11) beego (1.10) 9.25 ms 8.21 ms 13.97 ms 29.74 ms 193.13 ms 7959.33
scala (2.12) akkahttp (10.1) 172.96 ms 8.62 ms 79.08 ms 3939.85 ms 6935.04 ms 695955.67
python (3.7) falcon (1.4) 12.27 ms 9.56 ms 25.09 ms 45.55 ms 189.17 ms 9270.33
node (11.1) polka (0.5) 13.43 ms 9.99 ms 19.57 ms 51.97 ms 546.48 ms 20996.33
python (3.7) bottle (0.12) 13.77 ms 10.29 ms 27.84 ms 54.14 ms 201.88 ms 11467.00
node (11.1) rayo (1.2) 13.93 ms 10.45 ms 20.51 ms 56.34 ms 518.28 ms 20402.33
ruby (2.5) rails (5.2) 38.82 ms 10.53 ms 121.18 ms 298.52 ms 746.19 ms 64359.00
swift (4.2) perfect (3.0) 11.45 ms 11.46 ms 13.71 ms 16.23 ms 109.06 ms 2652.00
node (11.1) restana (2.3) 17.65 ms 11.70 ms 29.06 ms 97.28 ms 748.18 ms 32599.00
go (1.11) gf (1.2) 12.42 ms 11.78 ms 17.43 ms 35.48 ms 134.52 ms 6381.00
node (11.1) foxify (0.10) 15.38 ms 12.85 ms 22.01 ms 44.57 ms 475.82 ms 17652.33
swift (4.2) vapor (3.0) 17.21 ms 13.15 ms 23.84 ms 94.14 ms 763.61 ms 32515.67
scala (2.12) http4s (0.18) 23.45 ms 16.61 ms 33.37 ms 174.56 ms 1500.20 ms 67859.67
node (11.1) fastify (1.13) 24.76 ms 17.35 ms 36.05 ms 173.26 ms 896.28 ms 43129.00
node (11.1) koa (2.6) 23.81 ms 18.26 ms 35.62 ms 106.80 ms 725.54 ms 31789.67
python (3.7) aiohttp (3.4) 25.12 ms 21.86 ms 44.91 ms 67.29 ms 107.82 ms 13732.00
node (11.1) restify (7.2) 29.43 ms 23.91 ms 45.53 ms 105.43 ms 692.96 ms 30561.67
node (11.1) express (4.16) 33.69 ms 24.67 ms 46.76 ms 256.95 ms 1055.57 ms 54461.00
crystal (0.27) router.cr (0.2) 26.81 ms 24.68 ms 35.97 ms 42.66 ms 253.01 ms 7399.67
swift (4.2) kitura (2.5) 26.99 ms 25.19 ms 38.53 ms 53.38 ms 194.32 ms 8657.00
python (3.7) flask (1.0) 36.51 ms 27.81 ms 69.74 ms 100.84 ms 338.68 ms 22363.33
crystal (0.27) raze (0.3) 33.66 ms 34.66 ms 42.19 ms 48.27 ms 262.12 ms 11128.00
crystal (0.27) amber (0.11) 36.64 ms 35.63 ms 46.41 ms 55.97 ms 325.31 ms 10646.00
crystal (0.27) kemal (0.25) 34.43 ms 35.77 ms 42.72 ms 50.09 ms 188.62 ms 8304.33
crystal (0.27) lucky (0.11) 38.80 ms 38.47 ms 45.07 ms 52.01 ms 364.79 ms 8525.00
node (11.1) hapi (17.7) 57.67 ms 40.02 ms 67.33 ms 656.97 ms 1721.02 ms 108920.33
crystal (0.27) orion (1.6) 41.67 ms 41.10 ms 51.32 ms 57.74 ms 281.27 ms 10512.00
python (3.7) sanic (0.8) 60.64 ms 47.42 ms 118.50 ms 213.63 ms 360.39 ms 44426.67
python (3.7) django (2.1) 62.59 ms 49.30 ms 121.52 ms 162.32 ms 558.66 ms 34905.33
python (3.7) quart (0.6) 73.61 ms 62.92 ms 131.36 ms 205.14 ms 294.11 ms 38622.67
python (3.7) tornado (5.1) 95.24 ms 91.89 ms 125.09 ms 163.08 ms 429.59 ms 27008.67

Requests per seconds

Ranking (top 5)

1️⃣ (japronto) (python)

2️⃣ (actix-web) (rust)

3️⃣ (vibora) (python)

4️⃣ (evhtp) (cpp)

5️⃣ (jester) (nim)

Full table

Language (Runtime) Framework (Middleware) Requests / s Throughput
python (3.6) japronto (0.1) 294585.33 352.65 MB
rust (1.30) actix-web (0.7) 262076.00 297.91 MB
python (3.6) vibora (0.0) 232041.67 263.48 MB
cpp (11.0) evhtp (1.2) 223493.67 217.05 MB
nim (0.19) jester (0.4) 219109.00 440.36 MB
go (1.11) fasthttprouter (0.1) 213568.33 344.71 MB
crystal (0.27) spider-gazelle (1.1) 196982.33 211.44 MB
rust (1.30) gotham (0.3) 175148.67 358.55 MB
java (8) act (1.8) 164968.00 321.66 MB
ruby (2.5) agoo (2.5) 150334.67 86.96 MB
csharp (7.3) aspnetcore (2.1) 134119.33 218.63 MB
nim (0.19) mofuw (2.0) 128225.33 225.18 MB
go (1.11) muxie (1.0) 125130.67 167.81 MB
rust (1.30) iron (0.6) 122867.33 154.28 MB
go (1.11) iris (11.1) 122538.67 163.02 MB
c (11) agoo-c (0.1) 121545.67 70.21 MB
go (1.11) chi (3.3) 116327.33 155.44 MB
go (1.11) echo (3.3) 110886.00 194.77 MB
go (1.11) gin (1.3) 110777.67 194.56 MB
go (1.11) beego (1.10) 109916.33 149.28 MB
go (1.11) gorilla-mux (1.6) 108673.67 145.10 MB
rust (1.30) nickel (0.10) 101311.67 201.09 MB
python (3.7) falcon (1.4) 87855.00 225.71 MB
swift (4.2) perfect (3.0) 86099.67 80.90 MB
node (11.1) polka (0.5) 83947.33 125.75 MB
node (11.1) rayo (1.2) 80611.00 120.81 MB
go (1.11) gf (1.2) 80607.67 122.46 MB
python (3.7) bottle (0.12) 79088.00 194.76 MB
node (11.1) restana (2.3) 71429.33 107.00 MB
node (11.1) foxify (0.10) 68626.67 144.20 MB
swift (4.2) vapor (3.0) 66087.00 110.32 MB
scala (2.12) http4s (0.18) 61410.00 107.56 MB
scala (2.12) akkahttp (10.1) 61324.00 131.43 MB
php (7.2) slim (3.11) 54857.33 272.18 MB
c (99) kore (3.1) 53711.67 145.58 MB
node (11.1) fastify (1.13) 53466.00 124.65 MB
php (7.2) symfony (4.1) 50381.00 249.73 MB
node (11.1) koa (2.6) 47280.33 99.95 MB
php (7.2) lumen (5.7) 46520.33 241.25 MB
php (7.2) laravel (5.7) 42234.67 219.94 MB
python (3.7) aiohttp (3.4) 41266.67 93.55 MB
swift (4.2) kitura (2.5) 37292.67 69.18 MB
crystal (0.27) router.cr (0.2) 36739.00 34.44 MB
node (11.1) restify (7.2) 36459.67 63.85 MB
node (11.1) express (4.16) 35424.00 86.60 MB
rust (nightly) rocket (0.3) 31338.00 48.59 MB
crystal (0.27) raze (0.3) 29808.00 27.92 MB
ruby (2.5) roda (3.14) 29293.33 27.91 MB
crystal (0.27) kemal (0.25) 29117.00 47.44 MB
python (3.7) flask (1.0) 28251.00 69.60 MB
crystal (0.27) amber (0.11) 26673.67 48.68 MB
crystal (0.27) lucky (0.11) 25601.67 31.38 MB
crystal (0.27) orion (1.6) 23752.33 38.70 MB
ruby (2.5) rack-routing (0.0) 23199.00 13.38 MB
node (11.1) hapi (17.7) 22729.00 58.71 MB
python (3.7) sanic (0.8) 17735.00 31.62 MB
python (3.7) django (2.1) 16319.00 47.38 MB
ruby (2.5) flame (4.18) 15264.67 8.80 MB
ruby (2.5) hanami (1.3) 14485.00 109.52 MB
python (3.7) quart (0.6) 13796.00 27.48 MB
ruby (2.5) sinatra (2.0) 12756.33 33.10 MB
python (3.7) tornado (5.1) 10236.00 27.50 MB
ruby (2.5) rails (5.2) 3295.00 10.07 MB

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