Skip to content

Commit 67d0b2e

Browse files
authored
Merge pull request #153 from flrdv/master
Remove mentioning excluded packages, add indigo framework
2 parents e000c9b + 1bed6e3 commit 67d0b2e

File tree

8 files changed

+83
-397
lines changed

8 files changed

+83
-397
lines changed

README.md

Lines changed: 8 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,7 @@ This benchmark suite aims to compare the performance of Go web frameworks. It is
1515

1616
**Only test those webframeworks which are stable**
1717

18-
* [ace](https://github.com/plimble/ace)
1918
* [atreugo](https://github.com/savsgio/atreugo)
20-
* [aurora](https://github.com/aurora-go/aurora)
2119
* [baa](https://github.com/go-baa/baa)
2220
* [beego](https://github.com/astaxie/beego)
2321
* [bone](https://github.com/go-zoo/bone)
@@ -27,48 +25,38 @@ This benchmark suite aims to compare the performance of Go web frameworks. It is
2725
* [denco](https://github.com/naoina/denco)
2826
* [don](https://github.com/abemedia/go-don)
2927
* [echo](https://github.com/labstack/echo)
30-
* [echo-slim](https://github.com/partialize/echo-slim)
3128
* [fasthttp-routing](https://github.com/qiangxue/fasthttp-routing)
3229
* [fasthttp/router](https://github.com/fasthttp/router)
3330
* [fasthttp](https://github.com/valyala/fasthttp)
34-
* [fasthttprouter](https://github.com/buaazp/fasthttprouter)
35-
* [fastRouter](https://github.com/razonyang/fastrouter)
3631
* [fiber](https://gofiber.io/)
37-
* [flygo](https://github.com/billcoding/flygo)
3832
* [gear](http://github.com/teambition/gear)
3933
* [gearbox](https://github.com/gogearbox/gearbox)
4034
* [gem](https://github.com/go-gem/gem)
4135
* [gin](https://github.com/gin-gonic/gin)
4236
* [goframe](https://github.com/gogf/gf)
43-
* [go-json-rest](https://github.com/ant0ine/go-json-rest)
4437
* [go-ozzo](https://github.com/go-ozzo/ozzo-routing)
4538
* [go-restful](https://github.com/emicklei/go-restful)
4639
* [go-tigertonic](https://github.com/rcrowley/go-tigertonic)
4740
* [goji](https://github.com/zenazn/goji/web)
4841
* [goji](http://goji.io)
4942
* [golf](https://github.com/dinever/golf)
50-
* [gongular](https://github.com/mustafaakin/gongular)
5143
* [gorilla](https://github.com/gorilla/mux)
5244
* [gorouter](https://github.com/vardius/gorouter)
5345
* [goyave](https://github.com/System-Glitch/goyave)
54-
* [~~gramework~~](https://github.com/gramework/gramework):its init function pollutes the test so it has been removed from test.
5546
* [httprouter](https://github.com/julienschmidt/httprouter)
5647
* [httptreemux](https://github.com/dimfeld/httptreemux)
48+
* [indigo](https://github.com/indigo-web/indigo)
5749
* [lars](https://github.com/go-playground/lars)
5850
* [lion](https://github.com/celrenheit/lion)
5951
* [macaron](https://github.com/Unknwon/macaron)
60-
* [martini](https://github.com/go-martini/martini)
6152
* [muxie](https://github.com/kataras/muxie)
6253
* [negroni](https://github.com/urfave/negroni)
63-
* [neo](https://github.com/ivpusic/neo)
6454
* [pat](https://github.com/bmizerany/pat)
6555
* [pulse](https://github.com/gopulse/pulse)
6656
* [pure](https://github.com/go-playground/pure)
6757
* [r2router](https://github.com/vanng822/r2router)
68-
* [siris](https://github.com/go-siris/siris)
6958
* [tango](https://github.com/lunny/tango)
7059
* [tinyrouter](https://github.com/go101/tinyrouter)
71-
* [traffic](https://github.com/pilu/traffic)
7260
* [treemux](https://github.com/vmihailenco/treemux)
7361
* [violetear](https://github.com/nbari/violetear)
7462
* [vulcan](https://github.com/mailgun/route)
@@ -158,7 +146,7 @@ It takes a while to install a large number of dependencies that need to be downl
158146

159147
```
160148
cd $GOPATH/src/github.com/smallnest/go-web-framework-benchmark
161-
go build -o gowebbenchmark *.go
149+
go build -o gowebbenchmark .
162150
./test.sh
163151
```
164152

@@ -183,7 +171,7 @@ It will generate test results in processtime.csv and concurrency.csv. You can m
183171
* If you want to test some of web frameworks, you can modify the test script and only keep your selected web frameworks:
184172
```
185173
……
186-
web_frameworks=( "default" "ace" "beego" "bone" "denco" "echov1" "echov2standard" "echov2fasthttp" "fasthttp-raw" "fasthttprouter" "fasthttp-routing" "gin" "gocraftWeb" "goji" "gojiv2" "gojsonrest" "gorestful" "gorilla" "httprouter" "httptreemux" "lars" "lion" "macaron" "martini" "pat" "r2router" "tango" "tiger" "traffic" "violetear" "vulcan")
174+
web_frameworks=("default" "atreugo" "beego" "bone" "chi" "denco" "don" "echo" "fasthttp" "fasthttp-routing" "fasthttp/router" "fiber" "gear" "gearbox" "gin" "goframe" "goji" "gorestful" "gorilla" "gorouter" "gorouterfasthttp" "go-ozzo" "goyave" "httprouter" "httptreemux" "indigo" "lars" "lion" "muxie" "negroni" "pat" "pulse" "pure" "r2router" "tango" "tiger" "tinyrouter" "violetear" "vulcan" "webgo")
187175
……
188176
```
189177
* If you want to test all cases, you can run:
@@ -192,9 +180,12 @@ web_frameworks=( "default" "ace" "beego" "bone" "denco" "echov1" "echov2standard
192180
./test-all.sh
193181
```
194182

195-
## Plot
196-
you can run the shell script `plot.sh` in testresults directory and it can generate all images in its parent directory.
183+
NOTE: comparing 2 webframeworks consumes approx. 11-13 minutes (doesn't depend on the machine). Just `test.sh` with all
184+
the webframeworks enabled will take a couple of hours to run.
197185

186+
## Plot
187+
All the graphs are generated automatically as the `./test.sh` finishes. However, if the run was interrupted, you can
188+
generate them manually of partial data by executing `plot.sh` in testresults directory.
198189

199190
### Add new web framework
200191
Welcome to add new Go web frameworks. You can follow the below steps and send me a pull request.

go.mod

Lines changed: 3 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,18 @@ module github.com/smallnest/go-web-framework-benchmark
33
go 1.20
44

55
require (
6-
clevergo.tech/clevergo v0.6.0
76
github.com/abemedia/go-don v0.2.1
87
github.com/ant0ine/go-json-rest v3.3.2+incompatible
98
github.com/astaxie/beego v1.12.3
109
github.com/bmizerany/pat v0.0.0-20210406213842-e4b6760bdd6f
1110
github.com/bnkamalesh/webgo/v7 v7.0.0
12-
github.com/buaazp/fasthttprouter v0.1.1
1311
github.com/claygod/Bxog v0.0.0-20220907175109-bec75fbdd5e7
1412
github.com/dimfeld/httptreemux v5.0.1+incompatible
1513
github.com/dinever/golf v0.3.0
1614
github.com/emicklei/go-restful v2.16.0+incompatible
1715
github.com/fasthttp/router v1.4.22
1816
github.com/gin-gonic/gin v1.9.1
1917
github.com/go-chi/chi/v5 v5.0.10
20-
github.com/go-martini/martini v0.0.0-20170121215854-22fa46961aab
2118
github.com/go-ozzo/ozzo-routing v2.1.4+incompatible
2219
github.com/go-playground/lars v4.0.1+incompatible
2320
github.com/go-playground/pure v4.2.0+incompatible
@@ -28,26 +25,19 @@ require (
2825
github.com/gogf/gf/v2 v2.5.7
2926
github.com/gopulse/pulse v1.1.0
3027
github.com/gorilla/mux v1.8.1
31-
github.com/gowww/router v1.0.0
32-
github.com/indigo-web/indigo v0.15.7
33-
github.com/ivpusic/neo v0.3.0
28+
github.com/indigo-web/indigo v0.15.8
3429
github.com/julienschmidt/httprouter v1.3.0
3530
github.com/kataras/muxie v1.1.2
3631
github.com/labstack/echo/v4 v4.11.3
3732
github.com/lunny/log v0.0.0-20160921050905-7887c61bf0de
3833
github.com/lunny/tango v0.5.6
3934
github.com/mailgun/route v0.0.0-20191025171320-daa4df6c711a
40-
github.com/mustafaakin/gongular v0.0.0-20200705144045-a428565ae628
4135
github.com/naoina/denco v0.0.0-20180930074809-8475105a6b4c
4236
github.com/nbari/violetear v0.0.0-20210524103009-ce83b52538c9
43-
github.com/partialize/echo-slim/v4 v4.9.1
44-
github.com/pilu/traffic v0.5.3
4537
github.com/qiangxue/fasthttp-routing v0.0.0-20160225050629-6ccdc2a18d87
46-
github.com/razonyang/fastrouter v0.1.0
4738
github.com/rcrowley/go-tigertonic v0.0.0-20170420123839-fe6b9f080eb7
4839
github.com/savsgio/atreugo/v11 v11.12.0
4940
github.com/teambition/gear v1.27.3
50-
github.com/tockins/fresh v0.0.0-20181012144221-d8b891ad12e4
5141
github.com/urfave/negroni v1.0.0
5242
github.com/valyala/fasthttp v1.51.0
5343
github.com/vanng822/r2router v0.0.0-20150523112421-1023140a4f30
@@ -57,27 +47,23 @@ require (
5747
golang.org/x/net v0.19.0
5848
gopkg.in/baa.v1 v1.2.32
5949
gopkg.in/celrenheit/lion.v1 v1.0.0-20161101201550-7c6ce5d22d64
60-
gopkg.in/macaron.v1 v1.5.0
6150
goyave.dev/goyave/v4 v4.4.11
6251
)
6352

6453
require (
65-
clevergo.tech/log v0.3.0 // indirect
6654
gitea.com/lunny/log v0.0.0-20190322053110-01b5df579c4e // indirect
6755
github.com/BurntSushi/toml v1.3.2 // indirect
6856
github.com/Code-Hex/uniseg v0.2.0 // indirect
6957
github.com/abemedia/fasthttpfs v0.0.0-20220405193636-731805b0c723 // indirect
7058
github.com/abemedia/httprouter v0.0.0-20230505023925-232e0e5a4b1b // indirect
7159
github.com/andybalholm/brotli v1.0.6 // indirect
72-
github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect
7360
github.com/beorn7/perks v1.0.1 // indirect
7461
github.com/bytedance/sonic v1.10.2 // indirect
7562
github.com/celrenheit/htest v0.0.0-20170621160705-e34d50431e7f // indirect
7663
github.com/cespare/xxhash/v2 v2.2.0 // indirect
7764
github.com/chenzhuoyu/base64x v0.0.0-20230717121745-296ad89f973d // indirect
7865
github.com/chenzhuoyu/iasm v0.9.1 // indirect
7966
github.com/clbanning/mxj/v2 v2.7.0 // indirect
80-
github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0 // indirect
8167
github.com/common-nighthawk/go-figure v0.0.0-20210622060536-734e95fb86be // indirect
8268
github.com/davecgh/go-spew v1.1.1 // indirect
8369
github.com/fatih/color v1.16.0 // indirect
@@ -88,15 +74,14 @@ require (
8874
github.com/go-http-utils/negotiator v1.0.0 // indirect
8975
github.com/go-logr/logr v1.3.0 // indirect
9076
github.com/go-logr/stdr v1.2.2 // indirect
91-
github.com/go-macaron/inject v0.0.0-20200308113650-138e5925c53b // indirect
9277
github.com/go-playground/form v3.1.4+incompatible // indirect
9378
github.com/go-playground/locales v0.14.1 // indirect
9479
github.com/go-playground/universal-translator v0.18.1 // indirect
9580
github.com/go-playground/validator/v10 v10.16.0 // indirect
9681
github.com/goccy/go-json v0.10.2 // indirect
97-
github.com/golang-jwt/jwt v3.2.2+incompatible // indirect
9882
github.com/golang/gddo v0.0.0-20210115222349-20d68f94ee1f // indirect
9983
github.com/google/uuid v1.4.0 // indirect
84+
github.com/gopherjs/gopherjs v0.0.0-20190430165422-3e4dfb77656c // indirect
10085
github.com/gorilla/websocket v1.5.1 // indirect
10186
github.com/gravitational/trace v1.3.1 // indirect
10287
github.com/grokify/html-strip-tags-go v0.1.0 // indirect
@@ -105,10 +90,6 @@ require (
10590
github.com/indigo-web/chunkedbody v0.1.0 // indirect
10691
github.com/indigo-web/iter v0.1.0 // indirect
10792
github.com/indigo-web/utils v0.6.1 // indirect
108-
github.com/ivpusic/go-clicolor v0.0.0-20150828210804-23f0b77f328a // indirect
109-
github.com/ivpusic/golog v0.0.0-20170608213328-28640bee649f // indirect
110-
github.com/ivpusic/httpcheck v0.0.0-20170215120547-c49b174389ac // indirect
111-
github.com/ivpusic/urlregex v0.0.0-20160128000749-4dd86e784405 // indirect
11293
github.com/jinzhu/inflection v1.0.0 // indirect
11394
github.com/jinzhu/now v1.1.5 // indirect
11495
github.com/jonboulle/clockwork v0.4.0 // indirect
@@ -126,8 +107,6 @@ require (
126107
github.com/modern-go/reflect2 v1.0.2 // indirect
127108
github.com/olekukonko/tablewriter v0.0.5 // indirect
128109
github.com/pelletier/go-toml/v2 v2.1.0 // indirect
129-
github.com/pilu/config v0.0.0-20131214182432-3eb99e6c0b9a // indirect
130-
github.com/pilu/miniassert v0.0.0-20140522125902-bee63581261a // indirect
131110
github.com/pmezard/go-difflib v1.0.0 // indirect
132111
github.com/prometheus/client_golang v1.17.0 // indirect
133112
github.com/prometheus/client_model v0.5.0 // indirect
@@ -138,12 +117,12 @@ require (
138117
github.com/savsgio/gotils v0.0.0-20230208104028-c358bd845dee // indirect
139118
github.com/shiena/ansicolor v0.0.0-20230509054315-a9deabde6e02 // indirect
140119
github.com/sirupsen/logrus v1.9.3 // indirect
120+
github.com/smartystreets/assertions v1.0.1 // indirect
141121
github.com/smartystreets/goconvey v1.6.4 // indirect
142122
github.com/stretchr/testify v1.8.4 // indirect
143123
github.com/teambition/trie-mux v1.5.2 // indirect
144124
github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
145125
github.com/ugorji/go/codec v1.2.12 // indirect
146-
github.com/unknwon/com v1.0.1 // indirect
147126
github.com/valyala/bytebufferpool v1.0.0 // indirect
148127
github.com/valyala/fasttemplate v1.2.2 // indirect
149128
github.com/valyala/tcplisten v1.0.0 // indirect
@@ -157,10 +136,8 @@ require (
157136
golang.org/x/sys v0.15.0 // indirect
158137
golang.org/x/term v0.15.0 // indirect
159138
golang.org/x/text v0.14.0 // indirect
160-
golang.org/x/time v0.5.0 // indirect
161139
google.golang.org/protobuf v1.31.0 // indirect
162140
gopkg.in/go-playground/assert.v1 v1.2.1 // indirect
163-
gopkg.in/ini.v1 v1.67.0 // indirect
164141
gopkg.in/yaml.v2 v2.4.0 // indirect
165142
gopkg.in/yaml.v3 v3.0.1 // indirect
166143
gorm.io/gorm v1.25.5 // indirect

0 commit comments

Comments
 (0)