@@ -65,8 +65,14 @@ func benchRoutes(b *testing.B, router http.Handler, routes []route) {
65
65
// Micro Benchmarks
66
66
67
67
// Route with Param (no write)
68
- func BenchmarkTango_Param (b * testing.B ) {
69
- router := loadTangoSingle ("GET" , "/user/:name" , tangoHandler )
68
+ func BenchmarkAce_Param (b * testing.B ) {
69
+ router := loadAceSingle ("GET" , "/user/:name" , aceHandle )
70
+
71
+ r , _ := http .NewRequest ("GET" , "/user/gordon" , nil )
72
+ benchRequest (b , router , r )
73
+ }
74
+ func BenchmarkBear_Param (b * testing.B ) {
75
+ router := loadBearSingle ("GET" , "/user/{name}" , bearHandler )
70
76
71
77
r , _ := http .NewRequest ("GET" , "/user/gordon" , nil )
72
78
benchRequest (b , router , r )
@@ -84,11 +90,13 @@ func BenchmarkBone_Param(b *testing.B) {
84
90
benchRequest (b , router , r )
85
91
}
86
92
func BenchmarkDenco_Param (b * testing.B ) {
87
- handler := new (dencoHandler )
88
- router := loadDencoSingle (
89
- "GET" , "/user/:name" ,
90
- handler , http .HandlerFunc (handler .Get ),
91
- )
93
+ router := loadDencoSingle ("GET" , "/user/:name" , dencoHandler )
94
+
95
+ r , _ := http .NewRequest ("GET" , "/user/gordon" , nil )
96
+ benchRequest (b , router , r )
97
+ }
98
+ func BenchmarkEcho_Param (b * testing.B ) {
99
+ router := loadEchoSingle ("GET" , "/user/:name" , echoHandler )
92
100
93
101
r , _ := http .NewRequest ("GET" , "/user/gordon" , nil )
94
102
benchRequest (b , router , r )
@@ -151,6 +159,12 @@ func BenchmarkKocha_Param(b *testing.B) {
151
159
r , _ := http .NewRequest ("GET" , "/user/gordon" , nil )
152
160
benchRequest (b , router , r )
153
161
}
162
+ func BenchmarkMacaron_Param (b * testing.B ) {
163
+ router := loadMacaronSingle ("GET" , "/user/:name" , macaronHandler )
164
+
165
+ r , _ := http .NewRequest ("GET" , "/user/gordon" , nil )
166
+ benchRequest (b , router , r )
167
+ }
154
168
func BenchmarkMartini_Param (b * testing.B ) {
155
169
router := loadMartiniSingle ("GET" , "/user/:name" , martiniHandler )
156
170
@@ -175,6 +189,12 @@ func BenchmarkRivet_Param(b *testing.B) {
175
189
r , _ := http .NewRequest ("GET" , "/user/gordon" , nil )
176
190
benchRequest (b , router , r )
177
191
}
192
+ func BenchmarkTango_Param (b * testing.B ) {
193
+ router := loadTangoSingle ("GET" , "/user/:name" , tangoHandler )
194
+
195
+ r , _ := http .NewRequest ("GET" , "/user/gordon" , nil )
196
+ benchRequest (b , router , r )
197
+ }
178
198
func BenchmarkTigerTonic_Param (b * testing.B ) {
179
199
router := loadTigerTonicSingle ("GET" , "/user/{name}" , httpHandlerFunc )
180
200
@@ -187,14 +207,32 @@ func BenchmarkTraffic_Param(b *testing.B) {
187
207
r , _ := http .NewRequest ("GET" , "/user/gordon" , nil )
188
208
benchRequest (b , router , r )
189
209
}
210
+ func BenchmarkVulcan_Param (b * testing.B ) {
211
+ router := loadVulcanSingle ("GET" , "/user/:name" , vulcanHandler )
212
+
213
+ r , _ := http .NewRequest ("GET" , "/user/gordon" , nil )
214
+ benchRequest (b , router , r )
215
+ }
216
+ func BenchmarkZeus_Param (b * testing.B ) {
217
+ router := loadZeusSingle ("GET" , "/user/:name" , http .HandlerFunc (httpHandlerFunc ))
218
+
219
+ r , _ := http .NewRequest ("GET" , "/user/gordon" , nil )
220
+ benchRequest (b , router , r )
221
+ }
190
222
191
223
// Route with 5 Params (no write)
192
224
const fiveColon = "/:a/:b/:c/:d/:e"
193
225
const fiveBrace = "/{a}/{b}/{c}/{d}/{e}"
194
226
const fiveRoute = "/test/test/test/test/test"
195
227
196
- func BenchmarkTango_Param5 (b * testing.B ) {
197
- router := loadTangoSingle ("GET" , fiveColon , tangoHandler )
228
+ func BenchmarkAce_Param5 (b * testing.B ) {
229
+ router := loadAceSingle ("GET" , fiveColon , aceHandle )
230
+
231
+ r , _ := http .NewRequest ("GET" , fiveRoute , nil )
232
+ benchRequest (b , router , r )
233
+ }
234
+ func BenchmarkBear_Param5 (b * testing.B ) {
235
+ router := loadBearSingle ("GET" , fiveBrace , bearHandler )
198
236
199
237
r , _ := http .NewRequest ("GET" , fiveRoute , nil )
200
238
benchRequest (b , router , r )
@@ -212,11 +250,13 @@ func BenchmarkBone_Param5(b *testing.B) {
212
250
benchRequest (b , router , r )
213
251
}
214
252
func BenchmarkDenco_Param5 (b * testing.B ) {
215
- handler := new (dencoHandler )
216
- router := loadDencoSingle (
217
- "GET" , fiveColon ,
218
- handler , http .HandlerFunc (handler .Get ),
219
- )
253
+ router := loadDencoSingle ("GET" , fiveColon , dencoHandler )
254
+
255
+ r , _ := http .NewRequest ("GET" , fiveRoute , nil )
256
+ benchRequest (b , router , r )
257
+ }
258
+ func BenchmarkEcho_Param5 (b * testing.B ) {
259
+ router := loadEchoSingle ("GET" , fiveColon , echoHandler )
220
260
221
261
r , _ := http .NewRequest ("GET" , fiveRoute , nil )
222
262
benchRequest (b , router , r )
@@ -279,6 +319,12 @@ func BenchmarkKocha_Param5(b *testing.B) {
279
319
r , _ := http .NewRequest ("GET" , fiveRoute , nil )
280
320
benchRequest (b , router , r )
281
321
}
322
+ func BenchmarkMacaron_Param5 (b * testing.B ) {
323
+ router := loadMacaronSingle ("GET" , fiveColon , macaronHandler )
324
+
325
+ r , _ := http .NewRequest ("GET" , fiveRoute , nil )
326
+ benchRequest (b , router , r )
327
+ }
282
328
func BenchmarkMartini_Param5 (b * testing.B ) {
283
329
router := loadMartiniSingle ("GET" , fiveColon , martiniHandler )
284
330
@@ -288,7 +334,7 @@ func BenchmarkMartini_Param5(b *testing.B) {
288
334
func BenchmarkPat_Param5 (b * testing.B ) {
289
335
router := loadPatSingle ("GET" , fiveColon , http .HandlerFunc (httpHandlerFunc ))
290
336
291
- r , _ := http .NewRequest ("GET" , "/user/gordon" , nil )
337
+ r , _ := http .NewRequest ("GET" , fiveRoute , nil )
292
338
benchRequest (b , router , r )
293
339
}
294
340
func BenchmarkRevel_Param5 (b * testing.B ) {
@@ -303,6 +349,12 @@ func BenchmarkRivet_Param5(b *testing.B) {
303
349
r , _ := http .NewRequest ("GET" , fiveRoute , nil )
304
350
benchRequest (b , router , r )
305
351
}
352
+ func BenchmarkTango_Param5 (b * testing.B ) {
353
+ router := loadTangoSingle ("GET" , fiveColon , tangoHandler )
354
+
355
+ r , _ := http .NewRequest ("GET" , fiveRoute , nil )
356
+ benchRequest (b , router , r )
357
+ }
306
358
func BenchmarkTigerTonic_Param5 (b * testing.B ) {
307
359
router := loadTigerTonicSingle ("GET" , fiveBrace , httpHandlerFunc )
308
360
@@ -315,14 +367,32 @@ func BenchmarkTraffic_Param5(b *testing.B) {
315
367
r , _ := http .NewRequest ("GET" , fiveRoute , nil )
316
368
benchRequest (b , router , r )
317
369
}
370
+ func BenchmarkVulcan_Param5 (b * testing.B ) {
371
+ router := loadVulcanSingle ("GET" , fiveColon , vulcanHandler )
372
+
373
+ r , _ := http .NewRequest ("GET" , fiveRoute , nil )
374
+ benchRequest (b , router , r )
375
+ }
376
+ func BenchmarkZeus_Param5 (b * testing.B ) {
377
+ router := loadZeusSingle ("GET" , fiveColon , http .HandlerFunc (httpHandlerFunc ))
378
+
379
+ r , _ := http .NewRequest ("GET" , fiveRoute , nil )
380
+ benchRequest (b , router , r )
381
+ }
318
382
319
383
// Route with 20 Params (no write)
320
384
const twentyColon = "/:a/:b/:c/:d/:e/:f/:g/:h/:i/:j/:k/:l/:m/:n/:o/:p/:q/:r/:s/:t"
321
385
const twentyBrace = "/{a}/{b}/{c}/{d}/{e}/{f}/{g}/{h}/{i}/{j}/{k}/{l}/{m}/{n}/{o}/{p}/{q}/{r}/{s}/{t}"
322
386
const twentyRoute = "/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t"
323
387
324
- func BenchmarkTango_Param20 (b * testing.B ) {
325
- router := loadTangoSingle ("GET" , twentyColon , tangoHandler )
388
+ func BenchmarkAce_Param20 (b * testing.B ) {
389
+ router := loadAceSingle ("GET" , twentyColon , aceHandle )
390
+
391
+ r , _ := http .NewRequest ("GET" , twentyRoute , nil )
392
+ benchRequest (b , router , r )
393
+ }
394
+ func BenchmarkBear_Param20 (b * testing.B ) {
395
+ router := loadBearSingle ("GET" , twentyBrace , bearHandler )
326
396
327
397
r , _ := http .NewRequest ("GET" , twentyRoute , nil )
328
398
benchRequest (b , router , r )
@@ -340,11 +410,13 @@ func BenchmarkBone_Param20(b *testing.B) {
340
410
benchRequest (b , router , r )
341
411
}
342
412
func BenchmarkDenco_Param20 (b * testing.B ) {
343
- handler := new (dencoHandler )
344
- router := loadDencoSingle (
345
- "GET" , twentyColon ,
346
- handler , http .HandlerFunc (handler .Get ),
347
- )
413
+ router := loadDencoSingle ("GET" , twentyColon , dencoHandler )
414
+
415
+ r , _ := http .NewRequest ("GET" , twentyRoute , nil )
416
+ benchRequest (b , router , r )
417
+ }
418
+ func BenchmarkEcho_Param20 (b * testing.B ) {
419
+ router := loadEchoSingle ("GET" , twentyColon , echoHandler )
348
420
349
421
r , _ := http .NewRequest ("GET" , twentyRoute , nil )
350
422
benchRequest (b , router , r )
@@ -407,6 +479,12 @@ func BenchmarkKocha_Param20(b *testing.B) {
407
479
r , _ := http .NewRequest ("GET" , twentyRoute , nil )
408
480
benchRequest (b , router , r )
409
481
}
482
+ func BenchmarkMacaron_Param20 (b * testing.B ) {
483
+ router := loadMacaronSingle ("GET" , twentyColon , macaronHandler )
484
+
485
+ r , _ := http .NewRequest ("GET" , twentyRoute , nil )
486
+ benchRequest (b , router , r )
487
+ }
410
488
func BenchmarkMartini_Param20 (b * testing.B ) {
411
489
router := loadMartiniSingle ("GET" , twentyColon , martiniHandler )
412
490
@@ -416,7 +494,7 @@ func BenchmarkMartini_Param20(b *testing.B) {
416
494
func BenchmarkPat_Param20 (b * testing.B ) {
417
495
router := loadPatSingle ("GET" , twentyColon , http .HandlerFunc (httpHandlerFunc ))
418
496
419
- r , _ := http .NewRequest ("GET" , "/user/gordon" , nil )
497
+ r , _ := http .NewRequest ("GET" , twentyRoute , nil )
420
498
benchRequest (b , router , r )
421
499
}
422
500
func BenchmarkRevel_Param20 (b * testing.B ) {
@@ -431,6 +509,12 @@ func BenchmarkRivet_Param20(b *testing.B) {
431
509
r , _ := http .NewRequest ("GET" , twentyRoute , nil )
432
510
benchRequest (b , router , r )
433
511
}
512
+ func BenchmarkTango_Param20 (b * testing.B ) {
513
+ router := loadTangoSingle ("GET" , twentyColon , tangoHandler )
514
+
515
+ r , _ := http .NewRequest ("GET" , twentyRoute , nil )
516
+ benchRequest (b , router , r )
517
+ }
434
518
func BenchmarkTigerTonic_Param20 (b * testing.B ) {
435
519
router := loadTigerTonicSingle ("GET" , twentyBrace , httpHandlerFunc )
436
520
@@ -443,10 +527,28 @@ func BenchmarkTraffic_Param20(b *testing.B) {
443
527
r , _ := http .NewRequest ("GET" , twentyRoute , nil )
444
528
benchRequest (b , router , r )
445
529
}
530
+ func BenchmarkVulcan_Param20 (b * testing.B ) {
531
+ router := loadVulcanSingle ("GET" , twentyColon , vulcanHandler )
532
+
533
+ r , _ := http .NewRequest ("GET" , twentyRoute , nil )
534
+ benchRequest (b , router , r )
535
+ }
536
+ func BenchmarkZeus_Param20 (b * testing.B ) {
537
+ router := loadZeusSingle ("GET" , twentyColon , http .HandlerFunc (httpHandlerFunc ))
538
+
539
+ r , _ := http .NewRequest ("GET" , twentyRoute , nil )
540
+ benchRequest (b , router , r )
541
+ }
446
542
447
543
// Route with Param and write
448
- func BenchmarkTango_ParamWrite (b * testing.B ) {
449
- router := loadTangoSingle ("GET" , "/user/:name" , tangoHandlerWrite )
544
+ func BenchmarkAce_ParamWrite (b * testing.B ) {
545
+ router := loadAceSingle ("GET" , "/user/:name" , aceHandleWrite )
546
+
547
+ r , _ := http .NewRequest ("GET" , "/user/gordon" , nil )
548
+ benchRequest (b , router , r )
549
+ }
550
+ func BenchmarkBear_ParamWrite (b * testing.B ) {
551
+ router := loadBearSingle ("GET" , "/user/{name}" , bearHandlerWrite )
450
552
451
553
r , _ := http .NewRequest ("GET" , "/user/gordon" , nil )
452
554
benchRequest (b , router , r )
@@ -464,11 +566,13 @@ func BenchmarkBone_ParamWrite(b *testing.B) {
464
566
benchRequest (b , router , r )
465
567
}
466
568
func BenchmarkDenco_ParamWrite (b * testing.B ) {
467
- handler := new (dencoHandler )
468
- router := loadDencoSingle (
469
- "GET" , "/user/:name" ,
470
- handler , http .HandlerFunc (handler .dencoHandlerWrite ),
471
- )
569
+ router := loadDencoSingle ("GET" , "/user/:name" , dencoHandlerWrite )
570
+
571
+ r , _ := http .NewRequest ("GET" , "/user/gordon" , nil )
572
+ benchRequest (b , router , r )
573
+ }
574
+ func BenchmarkEcho_ParamWrite (b * testing.B ) {
575
+ router := loadEchoSingle ("GET" , "/user/:name" , echoHandlerWrite )
472
576
473
577
r , _ := http .NewRequest ("GET" , "/user/gordon" , nil )
474
578
benchRequest (b , router , r )
@@ -531,6 +635,12 @@ func BenchmarkKocha_ParamWrite(b *testing.B) {
531
635
r , _ := http .NewRequest ("GET" , "/user/gordon" , nil )
532
636
benchRequest (b , router , r )
533
637
}
638
+ func BenchmarkMacaron_ParamWrite (b * testing.B ) {
639
+ router := loadMacaronSingle ("GET" , "/user/:name" , macaronHandlerWrite )
640
+
641
+ r , _ := http .NewRequest ("GET" , "/user/gordon" , nil )
642
+ benchRequest (b , router , r )
643
+ }
534
644
func BenchmarkMartini_ParamWrite (b * testing.B ) {
535
645
router := loadMartiniSingle ("GET" , "/user/:name" , martiniHandlerWrite )
536
646
@@ -555,6 +665,12 @@ func BenchmarkRivet_ParamWrite(b *testing.B) {
555
665
r , _ := http .NewRequest ("GET" , "/user/gordon" , nil )
556
666
benchRequest (b , router , r )
557
667
}
668
+ func BenchmarkTango_ParamWrite (b * testing.B ) {
669
+ router := loadTangoSingle ("GET" , "/user/:name" , tangoHandlerWrite )
670
+
671
+ r , _ := http .NewRequest ("GET" , "/user/gordon" , nil )
672
+ benchRequest (b , router , r )
673
+ }
558
674
func BenchmarkTigerTonic_ParamWrite (b * testing.B ) {
559
675
router := loadTigerTonicSingle (
560
676
"GET" , "/user/{name}" ,
@@ -570,3 +686,15 @@ func BenchmarkTraffic_ParamWrite(b *testing.B) {
570
686
r , _ := http .NewRequest ("GET" , "/user/gordon" , nil )
571
687
benchRequest (b , router , r )
572
688
}
689
+ func BenchmarkVulcan_ParamWrite (b * testing.B ) {
690
+ router := loadVulcanSingle ("GET" , "/user/:name" , vulcanHandlerWrite )
691
+
692
+ r , _ := http .NewRequest ("GET" , "/user/gordon" , nil )
693
+ benchRequest (b , router , r )
694
+ }
695
+ func BenchmarkZeus_ParamWrite (b * testing.B ) {
696
+ router := loadZeusSingle ("GET" , "/user/:name" , http .HandlerFunc (patHandlerWrite ))
697
+
698
+ r , _ := http .NewRequest ("GET" , "/user/gordon" , nil )
699
+ benchRequest (b , router , r )
700
+ }
0 commit comments