11# Which is the fastest?
22
3- Measuring response times for each framework (middleware).
3+ Measuring response times (routing times) for each framework (middleware).
44Each framework has to have two features; routing and parsing path parameters.
55
66## Result
77
88<!-- Result from here -->
9- Last update: 2017-10-04
9+ Last update: 2017-10-28
1010```
1111OS: Darwin (version: 17.0.0, arch: x86_64)
1212CPU Cores: 8
@@ -17,69 +17,72 @@ CPU Cores: 8
17171 . [ router_cr] ( https://github.com/tbrand/router.cr ) (crystal)
18182 . [ raze] ( https://github.com/samueleaton/raze ) (crystal)
19193 . [ japronto] ( https://github.com/squeaky-pl/japronto ) (python)
20- 4 . [ fasthttprouter ] ( https://github.com/buaazp/fasthttprouter ) (go )
21- 5 . [ iron ] ( https://github.com/iron/iron ) (rust )
22- 6 . [ nickel ] ( https://github.com/nickel-org/nickel.rs ) (rust)
20+ 4 . [ nickel ] ( https://github.com/nickel-org/nickel.rs ) (rust )
21+ 5 . [ fasthttprouter ] ( https://github.com/buaazp/fasthttprouter ) (go )
22+ 6 . [ iron ] ( https://github.com/iron/iron ) (rust)
23237 . [ rocket] ( https://github.com/SergioBenitez/Rocket ) (rust)
24248 . [ kemal] ( https://github.com/kemalcr/kemal ) (crystal)
25- 9 . [ echo ] ( https://github.com/labstack/echo ) (go)
25+ 9 . [ iris ] ( https://github.com/kataras/iris ) (go)
262610 . [ gorilla_mux] ( https://github.com/gorilla/mux ) (go)
27- 11 . [ iris ] ( https://github.com/kataras/iris ) (go)
27+ 11 . [ echo ] ( https://github.com/labstack/echo ) (go)
282812 . [ aspnetcore] ( https://github.com/aspnet/Home ) (csharp)
292913 . [ plug] ( https://github.com/elixir-lang/plug ) (elixir)
303014 . [ phoenix] ( https://github.com/phoenixframework/phoenix ) (elixir)
313115 . [ vapor] ( https://github.com/vapor/vapor ) (swift)
32- 16 . [ perfect ] ( https://github.com/PerfectlySoft/Perfect ) (swift )
33- 17 . [ kitura ] ( https://github.com/IBM-Swift/Kitura ) (swift)
34- 18 . [ sanic ] ( https://github.com/channelcat/sanic ) (python )
35- 19 . [ akkahttp ] ( https://github.com/akka/akka-http ) (scala )
36- 20 . [ clusterexpress ] ( https://github.com/LearnBoost/cluster ) (node )
32+ 16 . [ sanic ] ( https://github.com/channelcat/sanic ) (python )
33+ 17 . [ perfect ] ( https://github.com/PerfectlySoft/Perfect ) (swift)
34+ 18 . [ kitura ] ( https://github.com/IBM-Swift/Kitura ) (swift )
35+ 19 . [ clusterexpress ] ( https://github.com/LearnBoost/cluster ) (node )
36+ 20 . [ akkahttp ] ( https://github.com/akka/akka-http ) (scala )
373721 . [ express] ( https://github.com/expressjs/express ) (node)
383822 . [ roda] ( https://github.com/jeremyevans/roda ) (ruby)
39- 23 . [ sinatra] ( https://github.com/sinatra/sinatra ) (ruby)
40- 24 . [ rails] ( https://github.com/rails/rails ) (ruby)
39+ 23 . [ criollo] ( https://github.com/thecatalinstan/criollo ) (objc)
40+ 24 . [ sinatra] ( https://github.com/sinatra/sinatra ) (ruby)
41+ 25 . [ rails] ( https://github.com/rails/rails ) (ruby)
4142
4243### Ranking (Language)
4344
44451 . crystal ([ router_cr] ( https://github.com/tbrand/router.cr ) )
45462 . python ([ japronto] ( https://github.com/squeaky-pl/japronto ) )
46- 3 . go ([ fasthttprouter ] ( https://github.com/buaazp/fasthttprouter ) )
47- 4 . rust ([ iron ] ( https://github.com/iron/iron ) )
47+ 3 . rust ([ nickel ] ( https://github.com/nickel-org/nickel.rs ) )
48+ 4 . go ([ fasthttprouter ] ( https://github.com/buaazp/fasthttprouter ) )
48495 . csharp ([ aspnetcore] ( https://github.com/aspnet/Home ) )
49506 . elixir ([ plug] ( https://github.com/elixir-lang/plug ) )
50517 . swift ([ vapor] ( https://github.com/vapor/vapor ) )
51- 8 . scala ([ akkahttp ] ( https://github.com/akka/akka-http ) )
52- 9 . node ([ clusterexpress ] ( https://github.com/LearnBoost/cluster ) )
52+ 8 . node ([ clusterexpress ] ( https://github.com/LearnBoost/cluster ) )
53+ 9 . scala ([ akkahttp ] ( https://github.com/akka/akka-http ) )
535410 . ruby ([ roda] ( https://github.com/jeremyevans/roda ) )
55+ 11 . objc ([ criollo] ( https://github.com/thecatalinstan/criollo ) )
5456
5557### All frameworks
5658
5759| Language (Runtime) | Framework (Middleware) | Max [ sec] | Min [ sec] | Ave [ sec] |
5860| ---------------------------| ---------------------------| -----------------| -----------------| -----------------|
59- | ruby | rails | 151.196547 | 150.960227 | 151.073975 |
60- | ruby | sinatra | 43.854565 | 43.581662 | 43.664177 |
61- | ruby | roda | 15.892388 | 15.811082 | 15.844165 |
62- | crystal | kemal | 3.547369 | 3.075486 | 3.444593 |
63- | crystal | router_cr | 2.486733 | 2.284032 | 2.344394 |
64- | crystal | raze | 2.490715 | 2.399881 | 2.456708 |
65- | go | echo | 3.785530 | 3.511024 | 3.647536 |
66- | go | gorilla_mux | 3.970627 | 3.522344 | 3.686079 |
67- | go | iris | 3.938069 | 3.583784 | 3.776195 |
68- | go | fasthttprouter | 2.824961 | 2.686712 | 2.731345 |
69- | rust | iron | 2.865915 | 2.743227 | 2.812815 |
70- | rust | nickel | 2.877018 | 2.823066 | 2.858988 |
71- | rust | rocket | 3.276701 | 3.145324 | 3.204920 |
72- | node | express | 13.961471 | 13.668522 | 13.791606 |
73- | node | clusterexpress | 8.187491 | 7.431857 | 7.656550 |
74- | elixir | plug | 4.895296 | 4.368241 | 4.727784 |
75- | elixir | phoenix | 5.307217 | 4.877070 | 5.116376 |
76- | swift | vapor | 5.613291 | 5.250472 | 5.479300 |
77- | swift | perfect | 5.703425 | 5.575321 | 5.648020 |
78- | swift | kitura | 6.678699 | 6.379810 | 6.503248 |
79- | scala | akkahttp | 8.330310 | 7.047381 | 7.584030 |
80- | csharp | aspnetcore | 3.959679 | 3.799744 | 3.860993 |
81- | python | sanic | 7.359875 | 6.208559 | 6.735841 |
82- | python | japronto | 2.639756 | 2.590362 | 2.610999 |
61+ | ruby | rails | 158.252949 | 152.902179 | 155.655884 |
62+ | ruby | sinatra | 50.694360 | 43.014136 | 47.820369 |
63+ | ruby | roda | 18.021737 | 16.183754 | 17.532603 |
64+ | crystal | kemal | 3.849068 | 3.183558 | 3.467156 |
65+ | crystal | router_cr | 2.636737 | 2.432839 | 2.492161 |
66+ | crystal | raze | 2.541773 | 2.506448 | 2.526932 |
67+ | go | echo | 4.762311 | 3.949864 | 4.438283 |
68+ | go | gorilla_mux | 4.596907 | 4.098254 | 4.354651 |
69+ | go | iris | 4.445337 | 3.879196 | 4.138097 |
70+ | go | fasthttprouter | 3.063812 | 2.892952 | 2.964931 |
71+ | rust | iron | 3.500870 | 2.850328 | 3.111342 |
72+ | rust | nickel | 3.056766 | 2.857153 | 2.942337 |
73+ | rust | rocket | 3.564244 | 3.261656 | 3.375485 |
74+ | node | express | 14.330640 | 14.023177 | 14.115579 |
75+ | node | clusterexpress | 8.468612 | 7.671729 | 7.898184 |
76+ | elixir | plug | 5.822447 | 4.320761 | 5.261752 |
77+ | elixir | phoenix | 6.393529 | 4.796465 | 5.914619 |
78+ | swift | vapor | 6.776044 | 5.411954 | 6.354711 |
79+ | swift | perfect | 7.103620 | 5.809812 | 6.627695 |
80+ | swift | kitura | 8.353631 | 6.686213 | 7.891552 |
81+ | scala | akkahttp | 9.341465 | 8.380177 | 8.819683 |
82+ | csharp | aspnetcore | 5.501347 | 4.215834 | 5.035063 |
83+ | python | sanic | 7.135462 | 4.771837 | 6.409820 |
84+ | python | japronto | 2.910558 | 2.688990 | 2.755750 |
85+ | objc | criollo | 32.403479 | 26.284483 | 30.581767 |
8386<!-- Result till here -->
8487
8588## Current target frameworks (middlewares)
@@ -125,7 +128,7 @@ See Development section when you want to add new languages or frameworks.
125128
126129## The rule
127130
128- We want to know the response time, not a usability. So full-stack framework is at a disadvantage.
131+ We want to know the response time (routing time) , not a usability. So full-stack framework is at a disadvantage.
129132 - Each server has no special logics.
130133 - Each server's executable is named as ` server_[Lauguage]_[Framework] ` . (For example, ` server_ruby_sinatra ` )
131134 - There are only 3 routes
0 commit comments