Skip to content

Commit 7e96420

Browse files
committed
Added bolt to the list
Signed-off-by: Vishal Rana <[email protected]>
1 parent d373aca commit 7e96420

File tree

6 files changed

+106
-0
lines changed

6 files changed

+106
-0
lines changed

bench_test.go

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,12 @@ func BenchmarkBeego_Param(b *testing.B) {
8383
r, _ := http.NewRequest("GET", "/user/gordon", nil)
8484
benchRequest(b, router, r)
8585
}
86+
func BenchmarkBolt_Param(b *testing.B) {
87+
router := loadBoltSingle("GET", "/user/:name", boltHandler)
88+
89+
r, _ := http.NewRequest("GET", "/user/gordon", nil)
90+
benchRequest(b, router, r)
91+
}
8692
func BenchmarkBone_Param(b *testing.B) {
8793
router := loadBoneSingle("GET", "/user/:name", http.HandlerFunc(httpHandlerFunc))
8894

@@ -237,6 +243,12 @@ func BenchmarkBeego_Param5(b *testing.B) {
237243
r, _ := http.NewRequest("GET", fiveRoute, nil)
238244
benchRequest(b, router, r)
239245
}
246+
func BenchmarkBolt_Param5(b *testing.B) {
247+
router := loadBoltSingle("GET", fiveColon, boltHandler)
248+
249+
r, _ := http.NewRequest("GET", fiveRoute, nil)
250+
benchRequest(b, router, r)
251+
}
240252
func BenchmarkBone_Param5(b *testing.B) {
241253
router := loadBoneSingle("GET", fiveColon, http.HandlerFunc(httpHandlerFunc))
242254

@@ -391,6 +403,12 @@ func BenchmarkBeego_Param20(b *testing.B) {
391403
r, _ := http.NewRequest("GET", twentyRoute, nil)
392404
benchRequest(b, router, r)
393405
}
406+
func BenchmarkBolt_Param20(b *testing.B) {
407+
router := loadBoltSingle("GET", twentyColon, boltHandler)
408+
409+
r, _ := http.NewRequest("GET", twentyRoute, nil)
410+
benchRequest(b, router, r)
411+
}
394412
func BenchmarkBone_Param20(b *testing.B) {
395413
router := loadBoneSingle("GET", twentyColon, http.HandlerFunc(httpHandlerFunc))
396414

@@ -541,6 +559,12 @@ func BenchmarkBeego_ParamWrite(b *testing.B) {
541559
r, _ := http.NewRequest("GET", "/user/gordon", nil)
542560
benchRequest(b, router, r)
543561
}
562+
func BenchmarkBolt_ParamWrite(b *testing.B) {
563+
router := loadBoltSingle("GET", "/user/:name", boltHandlerWrite)
564+
565+
r, _ := http.NewRequest("GET", "/user/gordon", nil)
566+
benchRequest(b, router, r)
567+
}
544568
func BenchmarkBone_ParamWrite(b *testing.B) {
545569
router := loadBoneSingle("GET", "/user/:name", http.HandlerFunc(patHandlerWrite))
546570

github_test.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -277,6 +277,7 @@ var (
277277
githubAce http.Handler
278278
githubBear http.Handler
279279
githubBeego http.Handler
280+
githubBolt http.Handler
280281
githubBone http.Handler
281282
githubDenco http.Handler
282283
githubGin http.Handler
@@ -312,6 +313,9 @@ func init() {
312313
calcMem("Beego", func() {
313314
githubBeego = loadBeego(githubAPI)
314315
})
316+
calcMem("Bolt", func() {
317+
githubBolt = loadBolt(githubAPI)
318+
})
315319
calcMem("Bone", func() {
316320
githubBone = loadBone(githubAPI)
317321
})
@@ -392,6 +396,10 @@ func BenchmarkBeego_GithubStatic(b *testing.B) {
392396
req, _ := http.NewRequest("GET", "/user/repos", nil)
393397
benchRequest(b, githubBeego, req)
394398
}
399+
func BenchmarkBolt_GithubStatic(b *testing.B) {
400+
req, _ := http.NewRequest("GET", "/user/repos", nil)
401+
benchRequest(b, githubBolt, req)
402+
}
395403
func BenchmarkBone_GithubStatic(b *testing.B) {
396404
req, _ := http.NewRequest("GET", "/user/repos", nil)
397405
benchRequest(b, githubBone, req)
@@ -490,6 +498,10 @@ func BenchmarkBeego_GithubParam(b *testing.B) {
490498
req, _ := http.NewRequest("GET", "/repos/julienschmidt/httprouter/stargazers", nil)
491499
benchRequest(b, githubBeego, req)
492500
}
501+
func BenchmarkBolt_GithubParam(b *testing.B) {
502+
req, _ := http.NewRequest("GET", "/repos/julienschmidt/httprouter/stargazers", nil)
503+
benchRequest(b, githubBolt, req)
504+
}
493505
func BenchmarkBone_GithubParam(b *testing.B) {
494506
req, _ := http.NewRequest("GET", "/repos/julienschmidt/httprouter/stargazers", nil)
495507
benchRequest(b, githubBone, req)
@@ -585,6 +597,9 @@ func BenchmarkBear_GithubAll(b *testing.B) {
585597
func BenchmarkBeego_GithubAll(b *testing.B) {
586598
benchRoutes(b, githubBeego, githubAPI)
587599
}
600+
func BenchmarkBolt_GithubAll(b *testing.B) {
601+
benchRoutes(b, githubBolt, githubAPI)
602+
}
588603
func BenchmarkBone_GithubAll(b *testing.B) {
589604
benchRoutes(b, githubBone, githubAPI)
590605
}

gplus_test.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ var (
3939
gplusAce http.Handler
4040
gplusBear http.Handler
4141
gplusBeego http.Handler
42+
gplusBolt http.Handler
4243
gplusBone http.Handler
4344
gplusDenco http.Handler
4445
gplusGin http.Handler
@@ -74,6 +75,9 @@ func init() {
7475
calcMem("Beego", func() {
7576
gplusBeego = loadBeego(gplusAPI)
7677
})
78+
calcMem("Bolt", func() {
79+
gplusBolt = loadBolt(gplusAPI)
80+
})
7781
calcMem("Bone", func() {
7882
gplusBone = loadBone(gplusAPI)
7983
})
@@ -154,6 +158,10 @@ func BenchmarkBeego_GPlusStatic(b *testing.B) {
154158
req, _ := http.NewRequest("GET", "/people", nil)
155159
benchRequest(b, gplusBeego, req)
156160
}
161+
func BenchmarkBolt_GPlusStatic(b *testing.B) {
162+
req, _ := http.NewRequest("GET", "/people", nil)
163+
benchRequest(b, gplusBolt, req)
164+
}
157165
func BenchmarkBone_GPlusStatic(b *testing.B) {
158166
req, _ := http.NewRequest("GET", "/people", nil)
159167
benchRequest(b, gplusBone, req)
@@ -252,6 +260,10 @@ func BenchmarkBeego_GPlusParam(b *testing.B) {
252260
req, _ := http.NewRequest("GET", "/people/118051310819094153327", nil)
253261
benchRequest(b, gplusBeego, req)
254262
}
263+
func BenchmarkBolt_GPlusParam(b *testing.B) {
264+
req, _ := http.NewRequest("GET", "/people/118051310819094153327", nil)
265+
benchRequest(b, gplusBolt, req)
266+
}
255267
func BenchmarkBone_GPlusParam(b *testing.B) {
256268
req, _ := http.NewRequest("GET", "/people/118051310819094153327", nil)
257269
benchRequest(b, gplusBone, req)
@@ -350,6 +362,10 @@ func BenchmarkBeego_GPlus2Params(b *testing.B) {
350362
req, _ := http.NewRequest("GET", "/people/118051310819094153327/activities/123456789", nil)
351363
benchRequest(b, gplusBeego, req)
352364
}
365+
func BenchmarkBolt_GPlus2Params(b *testing.B) {
366+
req, _ := http.NewRequest("GET", "/people/118051310819094153327/activities/123456789", nil)
367+
benchRequest(b, gplusBolt, req)
368+
}
353369
func BenchmarkBone_GPlus2Params(b *testing.B) {
354370
req, _ := http.NewRequest("GET", "/people/118051310819094153327/activities/123456789", nil)
355371
benchRequest(b, gplusBone, req)
@@ -445,6 +461,9 @@ func BenchmarkBear_GPlusAll(b *testing.B) {
445461
func BenchmarkBeego_GPlusAll(b *testing.B) {
446462
benchRoutes(b, gplusBeego, gplusAPI)
447463
}
464+
func BenchmarkBolt_GPlusAll(b *testing.B) {
465+
benchRoutes(b, gplusBolt, gplusAPI)
466+
}
448467
func BenchmarkBone_GPlusAll(b *testing.B) {
449468
benchRoutes(b, gplusBone, gplusAPI)
450469
}

parse_test.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ var (
5959
parseAce http.Handler
6060
parseBear http.Handler
6161
parseBeego http.Handler
62+
parseBolt http.Handler
6263
parseBone http.Handler
6364
parseDenco http.Handler
6465
parseGin http.Handler
@@ -94,6 +95,9 @@ func init() {
9495
calcMem("Beego", func() {
9596
parseBeego = loadBeego(parseAPI)
9697
})
98+
calcMem("Bolt", func() {
99+
parseBolt = loadBolt(parseAPI)
100+
})
97101
calcMem("Bone", func() {
98102
parseBone = loadBone(parseAPI)
99103
})
@@ -174,6 +178,10 @@ func BenchmarkBeego_ParseStatic(b *testing.B) {
174178
req, _ := http.NewRequest("GET", "/1/users", nil)
175179
benchRequest(b, parseBeego, req)
176180
}
181+
func BenchmarkBolt_ParseStatic(b *testing.B) {
182+
req, _ := http.NewRequest("GET", "/1/users", nil)
183+
benchRequest(b, parseBolt, req)
184+
}
177185
func BenchmarkBone_ParseStatic(b *testing.B) {
178186
req, _ := http.NewRequest("GET", "/1/users", nil)
179187
benchRequest(b, parseBone, req)
@@ -272,6 +280,10 @@ func BenchmarkBeego_ParseParam(b *testing.B) {
272280
req, _ := http.NewRequest("GET", "/1/classes/go", nil)
273281
benchRequest(b, parseBeego, req)
274282
}
283+
func BenchmarkBolt_ParseParam(b *testing.B) {
284+
req, _ := http.NewRequest("GET", "/1/classes/go", nil)
285+
benchRequest(b, parseBolt, req)
286+
}
275287
func BenchmarkBone_ParseParam(b *testing.B) {
276288
req, _ := http.NewRequest("GET", "/1/classes/go", nil)
277289
benchRequest(b, parseBone, req)
@@ -370,6 +382,10 @@ func BenchmarkBeego_Parse2Params(b *testing.B) {
370382
req, _ := http.NewRequest("GET", "/1/classes/go/123456789", nil)
371383
benchRequest(b, parseBeego, req)
372384
}
385+
func BenchmarkBolt_Parse2Params(b *testing.B) {
386+
req, _ := http.NewRequest("GET", "/1/classes/go/123456789", nil)
387+
benchRequest(b, parseBolt, req)
388+
}
373389
func BenchmarkBone_Parse2Params(b *testing.B) {
374390
req, _ := http.NewRequest("GET", "/1/classes/go/123456789", nil)
375391
benchRequest(b, parseBone, req)
@@ -465,6 +481,9 @@ func BenchmarkBear_ParseAll(b *testing.B) {
465481
func BenchmarkBeego_ParseAll(b *testing.B) {
466482
benchRoutes(b, parseBeego, parseAPI)
467483
}
484+
func BenchmarkBolt_ParseAll(b *testing.B) {
485+
benchRoutes(b, parseBolt, parseAPI)
486+
}
468487
func BenchmarkBone_ParseAll(b *testing.B) {
469488
benchRoutes(b, parseBone, parseAPI)
470489
}

routers.go

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ import (
3131
"github.com/gocraft/web"
3232
"github.com/gorilla/mux"
3333
"github.com/julienschmidt/httprouter"
34+
"github.com/labstack/bolt"
3435
"github.com/lunny/tango"
3536
vulcan "github.com/mailgun/route"
3637
"github.com/naoina/denco"
@@ -195,6 +196,27 @@ func loadBeegoSingle(method, path string, handler beego.FilterFunc) http.Handler
195196
return app
196197
}
197198

199+
// Bolt
200+
func boltHandler(*bolt.Context) {}
201+
202+
func boltHandlerWrite(c *bolt.Context) {
203+
io.WriteString(c.Response, c.Param("name"))
204+
}
205+
206+
func loadBolt(routes []route) http.Handler {
207+
router := bolt.New().Router
208+
for _, r := range routes {
209+
router.Add(r.method, r.path, boltHandler)
210+
}
211+
return router
212+
}
213+
214+
func loadBoltSingle(method, path string, handler bolt.HandlerFunc) http.Handler {
215+
router := bolt.New(bolt.MaxParam(20)).Router
216+
router.Add(method, path, boltHandler)
217+
return router
218+
}
219+
198220
// bone
199221
func loadBone(routes []route) http.Handler {
200222
router := bone.New()

static_test.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,7 @@ var (
175175
staticAce http.Handler
176176
staticBear http.Handler
177177
staticBeego http.Handler
178+
staticBolt http.Handler
178179
staticBone http.Handler
179180
staticDenco http.Handler
180181
staticGin http.Handler
@@ -218,6 +219,9 @@ func init() {
218219
calcMem("Beego", func() {
219220
staticBeego = loadBeego(staticRoutes)
220221
})
222+
calcMem("Bolt", func() {
223+
staticBolt = loadBolt(staticRoutes)
224+
})
221225
calcMem("Bone", func() {
222226
staticBone = loadBone(staticRoutes)
223227
})
@@ -299,6 +303,9 @@ func BenchmarkBeego_StaticAll(b *testing.B) {
299303
func BenchmarkBear_StaticAll(b *testing.B) {
300304
benchRoutes(b, staticBear, staticRoutes)
301305
}
306+
func BenchmarkBolt_StaticAll(b *testing.B) {
307+
benchRoutes(b, staticBolt, staticRoutes)
308+
}
302309
func BenchmarkBone_StaticAll(b *testing.B) {
303310
benchRoutes(b, staticBone, staticRoutes)
304311
}

0 commit comments

Comments
 (0)