From be4ba7d9df52a96c34715a89a75197aeff2f921a Mon Sep 17 00:00:00 2001 From: Qt Date: Mon, 20 Apr 2020 20:07:36 +0800 Subject: [PATCH 1/8] update: CHANGELOG.md add log for version 1.6.2 (#2329) --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 02459d51..c26b7658 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## Gin v1.6.2 + +### BUFIXES + * fix missing initial sync.RWMutex [#2305](https://github.com/gin-gonic/gin/pull/2305) +### ENHANCEMENTS + * Add set samesite in cookie. [#2306](https://github.com/gin-gonic/gin/pull/2306) + ## Gin v1.6.1 ### BUFIXES From 4427ca4a607802d2cd45268d83a180ef6aa0b5d4 Mon Sep 17 00:00:00 2001 From: Ronald Petty Date: Mon, 27 Apr 2020 18:36:04 -0700 Subject: [PATCH 2/8] Update gin_integration_test.go (#2341) * Update gin_integration_test.go TestUnixSocket fails if you run it twice in a row. This is due to the unix socket file persisting. Added defer to clean up. Whats unclear is the following test TestBadUnixSocket I suspect is just looking for cruft maybe from a prior test or defaults not working, I have not enough background to say. * Update gin_integration_test.go I believe there is some tab issue here, tried to manual overwrite it now. * Update gin_integration_test.go squash you dang spaces!!! --- gin_integration_test.go | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/gin_integration_test.go b/gin_integration_test.go index f29d1fc1..5f508c70 100644 --- a/gin_integration_test.go +++ b/gin_integration_test.go @@ -146,15 +146,19 @@ func TestRunWithPort(t *testing.T) { func TestUnixSocket(t *testing.T) { router := New() + unixTestSocket := "/tmp/unix_unit_test" + + defer os.Remove(unixTestSocket) + go func() { router.GET("/example", func(c *Context) { c.String(http.StatusOK, "it worked") }) - assert.NoError(t, router.RunUnix("/tmp/unix_unit_test")) + assert.NoError(t, router.RunUnix(unixTestSocket)) }() // have to wait for the goroutine to start and run the server // otherwise the main thread will complete time.Sleep(5 * time.Millisecond) - c, err := net.Dial("unix", "/tmp/unix_unit_test") + c, err := net.Dial("unix", unixTestSocket) assert.NoError(t, err) fmt.Fprint(c, "GET /example HTTP/1.0\r\n\r\n") From 2c43278080f90f1b3d3fd52784d765290d36d253 Mon Sep 17 00:00:00 2001 From: Bo-Yi Wu Date: Sun, 3 May 2020 20:39:34 +0800 Subject: [PATCH 3/8] chore(performance): Change *sync.RWMutex to sync.RWMutex (#2351) --- context.go | 27 ++++++++++++--------------- gin.go | 2 +- 2 files changed, 13 insertions(+), 16 deletions(-) diff --git a/context.go b/context.go index a2384c0e..fb7f54e9 100644 --- a/context.go +++ b/context.go @@ -54,7 +54,7 @@ type Context struct { engine *Engine // This mutex protect Keys map - KeysMutex *sync.RWMutex + mu sync.RWMutex // Keys is a key/value pair exclusively for the context of each request. Keys map[string]interface{} @@ -86,7 +86,7 @@ func (c *Context) reset() { c.Params = c.Params[0:0] c.handlers = nil c.index = -1 - c.KeysMutex = &sync.RWMutex{} + c.fullPath = "" c.Keys = nil c.Errors = c.Errors[0:0] @@ -98,7 +98,12 @@ func (c *Context) reset() { // Copy returns a copy of the current context that can be safely used outside the request's scope. // This has to be used when the context has to be passed to a goroutine. func (c *Context) Copy() *Context { - var cp = *c + cp := Context{ + writermem: c.writermem, + Request: c.Request, + Params: c.Params, + engine: c.engine, + } cp.writermem.ResponseWriter = nil cp.Writer = &cp.writermem cp.index = abortIndex @@ -228,29 +233,21 @@ func (c *Context) Error(err error) *Error { // Set is used to store a new key/value pair exclusively for this context. // It also lazy initializes c.Keys if it was not used previously. func (c *Context) Set(key string, value interface{}) { - if c.KeysMutex == nil { - c.KeysMutex = &sync.RWMutex{} - } - - c.KeysMutex.Lock() + c.mu.Lock() if c.Keys == nil { c.Keys = make(map[string]interface{}) } c.Keys[key] = value - c.KeysMutex.Unlock() + c.mu.Unlock() } // Get returns the value for the given key, ie: (value, true). // If the value does not exists it returns (nil, false) func (c *Context) Get(key string) (value interface{}, exists bool) { - if c.KeysMutex == nil { - c.KeysMutex = &sync.RWMutex{} - } - - c.KeysMutex.RLock() + c.mu.RLock() value, exists = c.Keys[key] - c.KeysMutex.RUnlock() + c.mu.RUnlock() return } diff --git a/gin.go b/gin.go index 1c2acbc8..ab1d0a46 100644 --- a/gin.go +++ b/gin.go @@ -162,7 +162,7 @@ func Default() *Engine { } func (engine *Engine) allocateContext() *Context { - return &Context{engine: engine, KeysMutex: &sync.RWMutex{}} + return &Context{engine: engine} } // Delims sets template left and right delims and returns a Engine instance. From abc4fa07189cb1f2ed23ec0d3aeac0d34d6348ff Mon Sep 17 00:00:00 2001 From: Bo-Yi Wu Date: Sun, 3 May 2020 21:12:07 +0800 Subject: [PATCH 4/8] Release v1.6.3 version (#2353) * chore: update version to v1.6.3 * update changelog Signed-off-by: Bo-Yi Wu --- CHANGELOG.md | 8 ++++++++ version.go | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c26b7658..592c2abc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,11 @@ +# Gin ChangeLog + +## Gin v1.6.3 + +### ENHANCEMENTS + + * Improve performance: Change `*sync.RWMutex` to `sync.RWMutex` in context. [#2351](https://github.com/gin-gonic/gin/pull/2351) + ## Gin v1.6.2 ### BUFIXES diff --git a/version.go b/version.go index 883bdad7..3e9687dc 100644 --- a/version.go +++ b/version.go @@ -5,4 +5,4 @@ package gin // Version is the current gin framework's version. -const Version = "v1.6.2" +const Version = "v1.6.3" From 54175dbe72289b7524b53a0afd2e5bddfa7b6efc Mon Sep 17 00:00:00 2001 From: thinkerou Date: Mon, 4 May 2020 11:40:41 +0800 Subject: [PATCH 5/8] chore: update the result of CR (#2354) * chore: update the result of CR * Update utils.go * Update utils.go * Update context.go * Update context.go --- auth.go | 5 +++-- context.go | 4 +++- gin.go | 7 ++++--- mode.go | 1 + path.go | 7 ++++--- recovery.go | 2 +- 6 files changed, 16 insertions(+), 10 deletions(-) diff --git a/auth.go b/auth.go index 9e5d4cf6..43ad36f5 100644 --- a/auth.go +++ b/auth.go @@ -70,8 +70,9 @@ func BasicAuth(accounts Accounts) HandlerFunc { } func processAccounts(accounts Accounts) authPairs { - assert1(len(accounts) > 0, "Empty list of authorized credentials") - pairs := make(authPairs, 0, len(accounts)) + length := len(accounts) + assert1(length > 0, "Empty list of authorized credentials") + pairs := make(authPairs, 0, length) for user, password := range accounts { assert1(user != "", "User can not be empty") value := authorizationHeader(user, password) diff --git a/context.go b/context.go index fb7f54e9..01cff1ae 100644 --- a/context.go +++ b/context.go @@ -34,9 +34,11 @@ const ( MIMEPOSTForm = binding.MIMEPOSTForm MIMEMultipartPOSTForm = binding.MIMEMultipartPOSTForm MIMEYAML = binding.MIMEYAML - BodyBytesKey = "_gin-gonic/gin/bodybyteskey" ) +// BodyBytesKey indicates a default body bytes key. +const BodyBytesKey = "_gin-gonic/gin/bodybyteskey" + const abortIndex int8 = math.MaxInt8 / 2 // Context is the most important part of gin. It allows us to pass variables between middleware, diff --git a/gin.go b/gin.go index ab1d0a46..888be36b 100644 --- a/gin.go +++ b/gin.go @@ -20,11 +20,12 @@ import ( const defaultMultipartMemory = 32 << 20 // 32 MB var ( - default404Body = []byte("404 page not found") - default405Body = []byte("405 method not allowed") - defaultAppEngine bool + default404Body = []byte("404 page not found") + default405Body = []byte("405 method not allowed") ) +var defaultAppEngine bool + // HandlerFunc defines the handler used by gin middleware as return value. type HandlerFunc func(*Context) diff --git a/mode.go b/mode.go index ca3677a9..11f833e9 100644 --- a/mode.go +++ b/mode.go @@ -22,6 +22,7 @@ const ( // TestMode indicates gin mode is test. TestMode = "test" ) + const ( debugCode = iota releaseCode diff --git a/path.go b/path.go index 51346e4a..d42d6b9d 100644 --- a/path.go +++ b/path.go @@ -136,10 +136,11 @@ func bufApp(buf *[]byte, s string, w int, c byte) { // Otherwise use either the stack buffer, if it is large enough, or // allocate a new buffer on the heap, and copy all previous characters. - if l := len(s); l > cap(b) { - *buf = make([]byte, len(s)) + length := len(s) + if length > cap(b) { + *buf = make([]byte, length) } else { - *buf = (*buf)[:l] + *buf = (*buf)[:length] } b = *buf diff --git a/recovery.go b/recovery.go index bc946c03..8cf0932a 100644 --- a/recovery.go +++ b/recovery.go @@ -146,6 +146,6 @@ func function(pc uintptr) []byte { } func timeFormat(t time.Time) string { - var timeString = t.Format("2006/01/02 - 15:04:05") + timeString := t.Format("2006/01/02 - 15:04:05") return timeString } From 6ac7f194c4e4867f30c94674af3015fceb1a97af Mon Sep 17 00:00:00 2001 From: thinkerou Date: Tue, 5 May 2020 13:55:57 +0800 Subject: [PATCH 6/8] chore: update some code style (#2356) --- context.go | 2 +- gin.go | 8 ++++---- githubapi_test.go | 8 ++++---- internal/json/jsoniter.go | 2 +- routes_test.go | 2 +- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/context.go b/context.go index 01cff1ae..4ebcc294 100644 --- a/context.go +++ b/context.go @@ -865,7 +865,7 @@ func (c *Context) IndentedJSON(code int, obj interface{}) { // Default prepends "while(1)," to response body if the given struct is array values. // It also sets the Content-Type as "application/json". func (c *Context) SecureJSON(code int, obj interface{}) { - c.Render(code, render.SecureJSON{Prefix: c.engine.secureJsonPrefix, Data: obj}) + c.Render(code, render.SecureJSON{Prefix: c.engine.secureJSONPrefix, Data: obj}) } // JSONP serializes the given struct as JSON into the response body. diff --git a/gin.go b/gin.go index 888be36b..4e72f81d 100644 --- a/gin.go +++ b/gin.go @@ -104,7 +104,7 @@ type Engine struct { RemoveExtraSlash bool delims render.Delims - secureJsonPrefix string + secureJSONPrefix string HTMLRender render.HTMLRender FuncMap template.FuncMap allNoRoute HandlersChain @@ -145,7 +145,7 @@ func New() *Engine { MaxMultipartMemory: defaultMultipartMemory, trees: make(methodTrees, 0, 9), delims: render.Delims{Left: "{{", Right: "}}"}, - secureJsonPrefix: "while(1);", + secureJSONPrefix: "while(1);", } engine.RouterGroup.engine = engine engine.pool.New = func() interface{} { @@ -172,9 +172,9 @@ func (engine *Engine) Delims(left, right string) *Engine { return engine } -// SecureJsonPrefix sets the secureJsonPrefix used in Context.SecureJSON. +// SecureJsonPrefix sets the secureJSONPrefix used in Context.SecureJSON. func (engine *Engine) SecureJsonPrefix(prefix string) *Engine { - engine.secureJsonPrefix = prefix + engine.secureJSONPrefix = prefix return engine } diff --git a/githubapi_test.go b/githubapi_test.go index 925c5a14..3f440bce 100644 --- a/githubapi_test.go +++ b/githubapi_test.go @@ -291,13 +291,13 @@ func TestShouldBindUri(t *testing.T) { type Person struct { Name string `uri:"name" binding:"required"` - Id string `uri:"id" binding:"required"` + ID string `uri:"id" binding:"required"` } router.Handle(http.MethodGet, "/rest/:name/:id", func(c *Context) { var person Person assert.NoError(t, c.ShouldBindUri(&person)) assert.True(t, "" != person.Name) - assert.True(t, "" != person.Id) + assert.True(t, "" != person.ID) c.String(http.StatusOK, "ShouldBindUri test OK") }) @@ -313,13 +313,13 @@ func TestBindUri(t *testing.T) { type Person struct { Name string `uri:"name" binding:"required"` - Id string `uri:"id" binding:"required"` + ID string `uri:"id" binding:"required"` } router.Handle(http.MethodGet, "/rest/:name/:id", func(c *Context) { var person Person assert.NoError(t, c.BindUri(&person)) assert.True(t, "" != person.Name) - assert.True(t, "" != person.Id) + assert.True(t, "" != person.ID) c.String(http.StatusOK, "BindUri test OK") }) diff --git a/internal/json/jsoniter.go b/internal/json/jsoniter.go index fabd7b84..649a3cdb 100644 --- a/internal/json/jsoniter.go +++ b/internal/json/jsoniter.go @@ -6,7 +6,7 @@ package json -import "github.com/json-iterator/go" +import jsoniter "github.com/json-iterator/go" var ( json = jsoniter.ConfigCompatibleWithStandardLibrary diff --git a/routes_test.go b/routes_test.go index ee6ea823..360ade62 100644 --- a/routes_test.go +++ b/routes_test.go @@ -514,7 +514,7 @@ func TestMiddlewareCalledOnceByRouterStaticFSNotFound(t *testing.T) { // Middleware must be called just only once by per request. middlewareCalledNum := 0 router.Use(func(c *Context) { - middlewareCalledNum += 1 + middlewareCalledNum++ }) router.StaticFS("/", http.FileSystem(http.Dir("/thisreallydoesntexist/"))) From 747efffd2a4571681ed227ef415945a7e5713bc3 Mon Sep 17 00:00:00 2001 From: thinkerou Date: Tue, 5 May 2020 14:06:42 +0800 Subject: [PATCH 7/8] chore: update godoc address (#2357) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9dde693d..dae63e24 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ [![Build Status](https://travis-ci.org/gin-gonic/gin.svg)](https://travis-ci.org/gin-gonic/gin) [![codecov](https://codecov.io/gh/gin-gonic/gin/branch/master/graph/badge.svg)](https://codecov.io/gh/gin-gonic/gin) [![Go Report Card](https://goreportcard.com/badge/github.com/gin-gonic/gin)](https://goreportcard.com/report/github.com/gin-gonic/gin) -[![GoDoc](https://godoc.org/github.com/gin-gonic/gin?status.svg)](https://godoc.org/github.com/gin-gonic/gin) +[![GoDoc](https://godoc.org/github.com/gin-gonic/gin?status.svg)](https://pkg.go.dev/github.com/gin-gonic/gin?tab=doc) [![Join the chat at https://gitter.im/gin-gonic/gin](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/gin-gonic/gin?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [![Sourcegraph](https://sourcegraph.com/github.com/gin-gonic/gin/-/badge.svg)](https://sourcegraph.com/github.com/gin-gonic/gin?badge) [![Open Source Helpers](https://www.codetriage.com/gin-gonic/gin/badges/users.svg)](https://www.codetriage.com/gin-gonic/gin) From 05464a8f6b8068d488660dd2b0c767e95810156f Mon Sep 17 00:00:00 2001 From: Bo-Yi Wu Date: Tue, 5 May 2020 16:37:40 +0800 Subject: [PATCH 8/8] docs: update benchmark result v1.6.3 (#2355) --- BENCHMARKS.md | 1267 ++++++++++++++++++++++++------------------------- README.md | 64 +-- 2 files changed, 655 insertions(+), 676 deletions(-) diff --git a/BENCHMARKS.md b/BENCHMARKS.md index e4ff4677..b164ae06 100644 --- a/BENCHMARKS.md +++ b/BENCHMARKS.md @@ -1,693 +1,666 @@ -## Benchmark System +# Benchmark System -**VM HOST:** DigitalOcean -**Machine:** 12 CPU, 24 GB RAM. Ubuntu 16.04.2 x64 -**Date:** Nov 26th, 2019 -**Go Version:** 1.13.4 linux/amd64 -**Source:** [Go HTTP Router Benchmark](https://github.com/julienschmidt/go-http-routing-benchmark) -**Result:** [See the gist](https://gist.github.com/appleboy/b5f2ecfaf50824ae9c64dcfb9165ae5e) +**VM HOST:** Travis +**Machine:** Ubuntu 16.04.6 LTS x64 +**Date:** May 04th, 2020 +**Version:** Gin v1.6.3 +**Go Version:** 1.14.2 linux/amd64 +**Source:** [Go HTTP Router Benchmark](https://github/gin-gonic/go-http-routing-benchmark) +**Result:** [See the gist](https://gist.github.com/appleboy/b5f2ecfaf50824ae9c64dcfb9165ae5e) or [Travis result](https://travis-ci.org/github/gin-gonic/go-http-routing-benchmark/jobs/682947061) ## Static Routes: 157 -``` -Gin: 34936 Bytes +```sh +Gin: 34936 Bytes -HttpServeMux: 14512 Bytes -Ace: 30648 Bytes -Aero: 800696 Bytes -Bear: 30664 Bytes -Beego: 98456 Bytes -Bone: 40224 Bytes -Chi: 83608 Bytes -CloudyKitRouter: 30448 Bytes -Denco: 9928 Bytes -Echo: 76584 Bytes -GocraftWeb: 55496 Bytes -Goji: 29744 Bytes -Gojiv2: 105840 Bytes -GoJsonRest: 137512 Bytes -GoRestful: 816936 Bytes -GorillaMux: 585632 Bytes -GowwwRouter: 24968 Bytes -HttpRouter: 21680 Bytes -HttpTreeMux: 73448 Bytes -Kocha: 115472 Bytes -LARS: 30640 Bytes -Macaron: 38592 Bytes -Martini: 310864 Bytes -Pat: 19696 Bytes -Possum: 89920 Bytes -R2router: 23712 Bytes -Rivet: 24608 Bytes -Tango: 28264 Bytes -TigerTonic: 78768 Bytes -Traffic: 538976 Bytes -Vulcan: 369960 Bytes +HttpServeMux: 14512 Bytes +Ace: 30680 Bytes +Aero: 34536 Bytes +Bear: 30456 Bytes +Beego: 98456 Bytes +Bone: 40224 Bytes +Chi: 83608 Bytes +Denco: 10216 Bytes +Echo: 80328 Bytes +GocraftWeb: 55288 Bytes +Goji: 29744 Bytes +Gojiv2: 105840 Bytes +GoJsonRest: 137496 Bytes +GoRestful: 816936 Bytes +GorillaMux: 585632 Bytes +GowwwRouter: 24968 Bytes +HttpRouter: 21712 Bytes +HttpTreeMux: 73448 Bytes +Kocha: 115472 Bytes +LARS: 30640 Bytes +Macaron: 38592 Bytes +Martini: 310864 Bytes +Pat: 19696 Bytes +Possum: 89920 Bytes +R2router: 23712 Bytes +Rivet: 24608 Bytes +Tango: 28264 Bytes +TigerTonic: 78768 Bytes +Traffic: 538976 Bytes +Vulcan: 369960 Bytes ``` ## GithubAPI Routes: 203 -``` -Gin: 58512 Bytes +```sh +Gin: 58512 Bytes -Ace: 48640 Bytes -Aero: 1386208 Bytes -Bear: 82536 Bytes -Beego: 150936 Bytes -Bone: 100976 Bytes -Chi: 95112 Bytes -CloudyKitRouter: 93704 Bytes -Denco: 36736 Bytes -Echo: 96328 Bytes -GocraftWeb: 95432 Bytes -Goji: 51600 Bytes -Gojiv2: 104704 Bytes -GoJsonRest: 142024 Bytes -GoRestful: 1241656 Bytes -GorillaMux: 1322784 Bytes -GowwwRouter: 80008 Bytes -HttpRouter: 37096 Bytes -HttpTreeMux: 78800 Bytes -Kocha: 785408 Bytes -LARS: 48600 Bytes -Macaron: 93680 Bytes -Martini: 485264 Bytes -Pat: 21200 Bytes -Possum: 85312 Bytes -R2router: 47104 Bytes -Rivet: 42840 Bytes -Tango: 54840 Bytes -TigerTonic: 96176 Bytes -Traffic: 921744 Bytes -Vulcan: 425368 Bytes +Ace: 48688 Bytes +Aero: 318568 Bytes +Bear: 84248 Bytes +Beego: 150936 Bytes +Bone: 100976 Bytes +Chi: 95112 Bytes +Denco: 36736 Bytes +Echo: 100296 Bytes +GocraftWeb: 95432 Bytes +Goji: 49680 Bytes +Gojiv2: 104704 Bytes +GoJsonRest: 141976 Bytes +GoRestful: 1241656 Bytes +GorillaMux: 1322784 Bytes +GowwwRouter: 80008 Bytes +HttpRouter: 37144 Bytes +HttpTreeMux: 78800 Bytes +Kocha: 785120 Bytes +LARS: 48600 Bytes +Macaron: 92784 Bytes +Martini: 485264 Bytes +Pat: 21200 Bytes +Possum: 85312 Bytes +R2router: 47104 Bytes +Rivet: 42840 Bytes +Tango: 54840 Bytes +TigerTonic: 95264 Bytes +Traffic: 921744 Bytes +Vulcan: 425992 Bytes ``` ## GPlusAPI Routes: 13 -``` -Gin: 4384 Bytes +```sh +Gin: 4384 Bytes -Ace: 3 664 Bytes -Aero: 88248 Bytes -Bear: 7112 Bytes -Beego: 10272 Bytes -Bone: 6688 Bytes -Chi: 8024 Bytes -CloudyKitRouter: 6728 Bytes -Denco: 3264 Bytes -Echo: 9272 Bytes -GocraftWeb: 7496 Bytes -Goji: 3152 Bytes -Gojiv2: 7376 Bytes -GoJsonRest: 11416 Bytes -GoRestful: 74328 Bytes -GorillaMux: 66208 Bytes -GowwwRouter: 5744 Bytes -HttpRouter: 2760 Bytes -HttpTreeMux: 7440 Bytes -Kocha: 128880 Bytes -LARS: 3656 Bytes -Macaron: 8656 Bytes -Martini: 23920 Bytes -Pat: 1856 Bytes -Possum: 7248 Bytes -R2router: 3928 Bytes -Rivet: 3064 Bytes -Tango: 5168 Bytes -TigerTonic: 9408 Bytes -Traffic: 46400 Bytes -Vulcan: 25544 Bytes +Ace: 3712 Bytes +Aero: 26056 Bytes +Bear: 7112 Bytes +Beego: 10272 Bytes +Bone: 6688 Bytes +Chi: 8024 Bytes +Denco: 3264 Bytes +Echo: 9688 Bytes +GocraftWeb: 7496 Bytes +Goji: 3152 Bytes +Gojiv2: 7376 Bytes +GoJsonRest: 11400 Bytes +GoRestful: 74328 Bytes +GorillaMux: 66208 Bytes +GowwwRouter: 5744 Bytes +HttpRouter: 2808 Bytes +HttpTreeMux: 7440 Bytes +Kocha: 128880 Bytes +LARS: 3656 Bytes +Macaron: 8656 Bytes +Martini: 23920 Bytes +Pat: 1856 Bytes +Possum: 7248 Bytes +R2router: 3928 Bytes +Rivet: 3064 Bytes +Tango: 5168 Bytes +TigerTonic: 9408 Bytes +Traffic: 46400 Bytes +Vulcan: 25544 Bytes ``` ## ParseAPI Routes: 26 -``` -Gin: 7776 Bytes +```sh +Gin: 7776 Bytes -Ace: 6656 Bytes -Aero: 163736 Bytes -Bear: 12528 Bytes -Beego: 19280 Bytes -Bone: 11440 Bytes -Chi: 9744 Bytes -Denco: 4192 Bytes -Echo: 11648 Bytes -GocraftWeb: 12800 Bytes -Goji: 5680 Bytes -Gojiv2: 14464 Bytes -GoJsonRest: 14424 Bytes -GoRestful: 116264 Bytes -GorillaMux: 105880 Bytes -GowwwRouter: 9344 Bytes -HttpRouter: 5024 Bytes -HttpTreeMux: 7848 Bytes -Kocha: 181712 Bytes -LARS: 6632 Bytes -Macaron: 13648 Bytes -Martini: 45888 Bytes -Pat: 2560 Bytes -Possum: 9200 Bytes -R2router: 7056 Bytes -Rivet: 5680 Bytes -Tango: 8920 Bytes -TigerTonic: 9840 Bytes -Traffic: 79096 Bytes -Vulcan: 44504 Bytes +Ace: 6704 Bytes +Aero: 28488 Bytes +Bear: 12320 Bytes +Beego: 19280 Bytes +Bone: 11440 Bytes +Chi: 9744 Bytes +Denco: 4192 Bytes +Echo: 11664 Bytes +GocraftWeb: 12800 Bytes +Goji: 5680 Bytes +Gojiv2: 14464 Bytes +GoJsonRest: 14072 Bytes +GoRestful: 116264 Bytes +GorillaMux: 105880 Bytes +GowwwRouter: 9344 Bytes +HttpRouter: 5072 Bytes +HttpTreeMux: 7848 Bytes +Kocha: 181712 Bytes +LARS: 6632 Bytes +Macaron: 13648 Bytes +Martini: 45888 Bytes +Pat: 2560 Bytes +Possum: 9200 Bytes +R2router: 7056 Bytes +Rivet: 5680 Bytes +Tango: 8920 Bytes +TigerTonic: 9840 Bytes +Traffic: 79096 Bytes +Vulcan: 44504 Bytes ``` ## Static Routes -``` -BenchmarkGin_StaticAll 25604 45487 ns/op 0 B/op 0 allocs/op +```sh +BenchmarkGin_StaticAll 62169 19319 ns/op 0 B/op 0 allocs/op -BenchmarkAce_StaticAll 28402 42046 ns/op 0 B/op 0 allocs/op -BenchmarkAero_StaticAll 38766 30333 ns/op 0 B/op 0 allocs/op -BenchmarkHttpServeMux_StaticAll 25728 46511 ns/op 0 B/op 0 allocs/op -BenchmarkBeego_StaticAll 5098 288527 ns/op 55264 B/op 471 allocs/op -BenchmarkBear_StaticAll 10000 126323 ns/op 20272 B/op 469 allocs/op -BenchmarkBone_StaticAll 9499 113631 ns/op 0 B/op 0 allocs/op -BenchmarkChi_StaticAll 7912 237363 ns/op 67824 B/op 471 allocs/op -BenchmarkCloudyKitRouter_StaticAll 41626 28668 ns/op 0 B/op 0 allocs/op -BenchmarkDenco_StaticAll 95774 12221 ns/op 0 B/op 0 allocs/op -BenchmarkEcho_StaticAll 26246 44603 ns/op 0 B/op 0 allocs/op -BenchmarkGocraftWeb_StaticAll 10000 193337 ns/op 46312 B/op 785 allocs/op -BenchmarkGoji_StaticAll 15886 75789 ns/op 0 B/op 0 allocs/op -BenchmarkGojiv2_StaticAll 1886 597374 ns/op 205984 B/op 1570 allocs/op -BenchmarkGoJsonRest_StaticAll 4700 307144 ns/op 51653 B/op 1727 allocs/op -BenchmarkGoRestful_StaticAll 429 2880165 ns/op 613280 B/op 2053 allocs/op -BenchmarkGorillaMux_StaticAll 754 1491761 ns/op 153233 B/op 1413 allocs/op -BenchmarkGowwwRouter_StaticAll 28071 42629 ns/op 0 B/op 0 allocs/op -BenchmarkHttpRouter_StaticAll 47672 24875 ns/op 0 B/op 0 allocs/op -BenchmarkHttpTreeMux_StaticAll 46770 25100 ns/op 0 B/op 0 allocs/op -BenchmarkKocha_StaticAll 61045 19494 ns/op 0 B/op 0 allocs/op -BenchmarkLARS_StaticAll 36103 32700 ns/op 0 B/op 0 allocs/op -BenchmarkMacaron_StaticAll 4261 430131 ns/op 115552 B/op 1256 allocs/op -BenchmarkMartini_StaticAll 481 2320157 ns/op 125444 B/op 1717 allocs/op -BenchmarkPat_StaticAll 325 3739521 ns/op 602832 B/op 12559 allocs/op -BenchmarkPossum_StaticAll 10000 203575 ns/op 65312 B/op 471 allocs/op -BenchmarkR2router_StaticAll 10000 110536 ns/op 22608 B/op 628 allocs/op -BenchmarkRivet_StaticAll 23344 51174 ns/op 0 B/op 0 allocs/op -BenchmarkTango_StaticAll 3596 340045 ns/op 39209 B/op 1256 allocs/op -BenchmarkTigerTonic_StaticAll 16784 71807 ns/op 7376 B/op 157 allocs/op -BenchmarkTraffic_StaticAll 350 3435155 ns/op 754862 B/op 14601 allocs/op -BenchmarkVulcan_StaticAll 5930 200284 ns/op 15386 B/op 471 allocs/op +BenchmarkAce_StaticAll 65428 18313 ns/op 0 B/op 0 allocs/op +BenchmarkAero_StaticAll 121132 9632 ns/op 0 B/op 0 allocs/op +BenchmarkHttpServeMux_StaticAll 52626 22758 ns/op 0 B/op 0 allocs/op +BenchmarkBeego_StaticAll 9962 179058 ns/op 55264 B/op 471 allocs/op +BenchmarkBear_StaticAll 14894 80966 ns/op 20272 B/op 469 allocs/op +BenchmarkBone_StaticAll 18718 64065 ns/op 0 B/op 0 allocs/op +BenchmarkChi_StaticAll 10000 149827 ns/op 67824 B/op 471 allocs/op +BenchmarkDenco_StaticAll 211393 5680 ns/op 0 B/op 0 allocs/op +BenchmarkEcho_StaticAll 49341 24343 ns/op 0 B/op 0 allocs/op +BenchmarkGocraftWeb_StaticAll 10000 126209 ns/op 46312 B/op 785 allocs/op +BenchmarkGoji_StaticAll 27956 43174 ns/op 0 B/op 0 allocs/op +BenchmarkGojiv2_StaticAll 3430 370718 ns/op 205984 B/op 1570 allocs/op +BenchmarkGoJsonRest_StaticAll 9134 188888 ns/op 51653 B/op 1727 allocs/op +BenchmarkGoRestful_StaticAll 706 1703330 ns/op 613280 B/op 2053 allocs/op +BenchmarkGorillaMux_StaticAll 1268 924083 ns/op 153233 B/op 1413 allocs/op +BenchmarkGowwwRouter_StaticAll 63374 18935 ns/op 0 B/op 0 allocs/op +BenchmarkHttpRouter_StaticAll 109938 10902 ns/op 0 B/op 0 allocs/op +BenchmarkHttpTreeMux_StaticAll 109166 10861 ns/op 0 B/op 0 allocs/op +BenchmarkKocha_StaticAll 92258 12992 ns/op 0 B/op 0 allocs/op +BenchmarkLARS_StaticAll 65200 18387 ns/op 0 B/op 0 allocs/op +BenchmarkMacaron_StaticAll 5671 291501 ns/op 115553 B/op 1256 allocs/op +BenchmarkMartini_StaticAll 807 1460498 ns/op 125444 B/op 1717 allocs/op +BenchmarkPat_StaticAll 513 2342396 ns/op 602832 B/op 12559 allocs/op +BenchmarkPossum_StaticAll 10000 128270 ns/op 65312 B/op 471 allocs/op +BenchmarkR2router_StaticAll 16726 71760 ns/op 22608 B/op 628 allocs/op +BenchmarkRivet_StaticAll 41722 28723 ns/op 0 B/op 0 allocs/op +BenchmarkTango_StaticAll 7606 205082 ns/op 39209 B/op 1256 allocs/op +BenchmarkTigerTonic_StaticAll 26247 45806 ns/op 7376 B/op 157 allocs/op +BenchmarkTraffic_StaticAll 550 2284518 ns/op 754864 B/op 14601 allocs/op +BenchmarkVulcan_StaticAll 10000 131343 ns/op 15386 B/op 471 allocs/op ``` ## Micro Benchmarks -``` -BenchmarkGin_Param 8623915 139 ns/op 0 B/op 0 allocs/op - -BenchmarkAce_Param 3976539 290 ns/op 32 B/op 1 allocs/op -BenchmarkAero_Param 8948976 133 ns/op 0 B/op 0 allocs/op -BenchmarkBear_Param 1000000 1277 ns/op 456 B/op 5 allocs/op -BenchmarkBeego_Param 889404 1785 ns/op 352 B/op 3 allocs/op -BenchmarkBone_Param 1000000 2219 ns/op 816 B/op 6 allocs/op -BenchmarkChi_Param 1000000 1386 ns/op 432 B/op 3 allocs/op -BenchmarkCloudyKitRouter_Param 18343244 61.2 ns/op 0 B/op 0 allocs/op -BenchmarkDenco_Param 5637424 204 ns/op 32 B/op 1 allocs/op -BenchmarkEcho_Param 9540910 122 ns/op 0 B/op 0 allocs/op -BenchmarkGocraftWeb_Param 1000000 1939 ns/op 648 B/op 8 allocs/op -BenchmarkGoji_Param 1283509 938 ns/op 336 B/op 2 allocs/op -BenchmarkGojiv2_Param 331266 3554 ns/op 1328 B/op 11 allocs/op -BenchmarkGoJsonRest_Param 908851 2158 ns/op 649 B/op 13 allocs/op -BenchmarkGoRestful_Param 135781 9339 ns/op 4192 B/op 14 allocs/op -BenchmarkGorillaMux_Param 308407 3893 ns/op 1280 B/op 10 allocs/op -BenchmarkGowwwRouter_Param 1000000 1044 ns/op 432 B/op 3 allocs/op -BenchmarkHttpRouter_Param 6653476 162 ns/op 32 B/op 1 allocs/op -BenchmarkHttpTreeMux_Param 1361378 819 ns/op 352 B/op 3 allocs/op -BenchmarkKocha_Param 3084330 353 ns/op 56 B/op 3 allocs/op -BenchmarkLARS_Param 11502079 107 ns/op 0 B/op 0 allocs/op -BenchmarkMacaron_Param 439095 3750 ns/op 1072 B/op 10 allocs/op -BenchmarkMartini_Param 177099 7479 ns/op 1072 B/op 10 allocs/op -BenchmarkPat_Param 729747 2048 ns/op 536 B/op 11 allocs/op -BenchmarkPossum_Param 995989 1705 ns/op 496 B/op 5 allocs/op -BenchmarkR2router_Param 1000000 1037 ns/op 432 B/op 5 allocs/op -BenchmarkRivet_Param 4057065 271 ns/op 48 B/op 1 allocs/op -BenchmarkTango_Param 812029 1682 ns/op 248 B/op 8 allocs/op -BenchmarkTigerTonic_Param 450592 3358 ns/op 776 B/op 16 allocs/op -BenchmarkTraffic_Param 206390 5661 ns/op 1856 B/op 21 allocs/op -BenchmarkVulcan_Param 1441147 792 ns/op 98 B/op 3 allocs/op - -BenchmarkAce_Param5 1891473 632 ns/op 160 B/op 1 allocs/op -BenchmarkAero_Param5 5191258 227 ns/op 0 B/op 0 allocs/op -BenchmarkBear_Param5 988882 1734 ns/op 501 B/op 5 allocs/op -BenchmarkBeego_Param5 625438 2132 ns/op 352 B/op 3 allocs/op -BenchmarkBone_Param5 622030 3061 ns/op 864 B/op 6 allocs/op -BenchmarkChi_Param5 1000000 1735 ns/op 432 B/op 3 allocs/op -BenchmarkCloudyKitRouter_Param5 5167868 225 ns/op 0 B/op 0 allocs/op -BenchmarkDenco_Param5 2174550 550 ns/op 160 B/op 1 allocs/op -BenchmarkEcho_Param5 4272258 275 ns/op 0 B/op 0 allocs/op -BenchmarkGin_Param5 4190391 275 ns/op 0 B/op 0 allocs/op -BenchmarkGocraftWeb_Param5 623739 3107 ns/op 920 B/op 11 allocs/op -BenchmarkGoji_Param5 1000000 1310 ns/op 336 B/op 2 allocs/op -BenchmarkGojiv2_Param5 314694 3803 ns/op 1392 B/op 11 allocs/op -BenchmarkGoJsonRest_Param5 308203 4108 ns/op 1097 B/op 16 allocs/op -BenchmarkGoRestful_Param5 115048 9787 ns/op 4288 B/op 14 allocs/op -BenchmarkGorillaMux_Param5 180812 5658 ns/op 1344 B/op 10 allocs/op -BenchmarkGowwwRouter_Param5 1000000 1156 ns/op 432 B/op 3 allocs/op -BenchmarkHttpRouter_Param5 2395767 502 ns/op 160 B/op 1 allocs/op -BenchmarkHttpTreeMux_Param5 899263 2096 ns/op 576 B/op 6 allocs/op -BenchmarkKocha_Param5 1000000 1639 ns/op 440 B/op 10 allocs/op -BenchmarkLARS_Param5 5807994 203 ns/op 0 B/op 0 allocs/op -BenchmarkMacaron_Param5 272967 4087 ns/op 1072 B/op 10 allocs/op -BenchmarkMartini_Param5 120735 8886 ns/op 1232 B/op 11 allocs/op -BenchmarkPat_Param5 294714 4943 ns/op 888 B/op 29 allocs/op -BenchmarkPossum_Param5 1000000 1689 ns/op 496 B/op 5 allocs/op -BenchmarkR2router_Param5 1000000 1319 ns/op 432 B/op 5 allocs/op -BenchmarkRivet_Param5 1347289 883 ns/op 240 B/op 1 allocs/op -BenchmarkTango_Param5 617077 2091 ns/op 360 B/op 8 allocs/op -BenchmarkTigerTonic_Param5 113659 11212 ns/op 2279 B/op 39 allocs/op -BenchmarkTraffic_Param5 134148 9039 ns/op 2208 B/op 27 allocs/op -BenchmarkVulcan_Param5 1000000 1095 ns/op 98 B/op 3 allocs/op - -BenchmarkAce_Param20 1000000 1838 ns/op 640 B/op 1 allocs/op -BenchmarkAero_Param20 17120668 66.1 ns/op 0 B/op 0 allocs/op -BenchmarkBear_Param20 205585 5332 ns/op 1665 B/op 5 allocs/op -BenchmarkBeego_Param20 230522 5382 ns/op 352 B/op 3 allocs/op -BenchmarkBone_Param20 167190 8076 ns/op 2031 B/op 6 allocs/op -BenchmarkChi_Param20 480528 3044 ns/op 432 B/op 3 allocs/op -BenchmarkCloudyKitRouter_Param20 1347794 872 ns/op 0 B/op 0 allocs/op -BenchmarkDenco_Param20 1000000 1867 ns/op 640 B/op 1 allocs/op -BenchmarkEcho_Param20 1363526 897 ns/op 0 B/op 0 allocs/op -BenchmarkGin_Param20 1607217 748 ns/op 0 B/op 0 allocs/op -BenchmarkGocraftWeb_Param20 97314 11671 ns/op 3795 B/op 15 allocs/op -BenchmarkGoji_Param20 289407 4220 ns/op 1246 B/op 2 allocs/op -BenchmarkGojiv2_Param20 245186 4869 ns/op 1632 B/op 11 allocs/op -BenchmarkGoJsonRest_Param20 78049 15725 ns/op 4485 B/op 20 allocs/op -BenchmarkGoRestful_Param20 66907 18031 ns/op 6716 B/op 18 allocs/op -BenchmarkGorillaMux_Param20 81866 12422 ns/op 3452 B/op 12 allocs/op -BenchmarkGowwwRouter_Param20 955983 1688 ns/op 432 B/op 3 allocs/op -BenchmarkHttpRouter_Param20 1000000 1629 ns/op 640 B/op 1 allocs/op -BenchmarkHttpTreeMux_Param20 108940 10241 ns/op 3195 B/op 10 allocs/op -BenchmarkKocha_Param20 197022 5488 ns/op 1808 B/op 27 allocs/op -BenchmarkLARS_Param20 2451241 490 ns/op 0 B/op 0 allocs/op -BenchmarkMacaron_Param20 106770 10788 ns/op 2923 B/op 12 allocs/op -BenchmarkMartini_Param20 69028 17112 ns/op 3596 B/op 13 allocs/op -BenchmarkPat_Param20 56275 21535 ns/op 4424 B/op 93 allocs/op -BenchmarkPossum_Param20 1000000 1705 ns/op 496 B/op 5 allocs/op -BenchmarkR2router_Param20 172215 7099 ns/op 2283 B/op 7 allocs/op -BenchmarkRivet_Param20 447265 2987 ns/op 1024 B/op 1 allocs/op -BenchmarkTango_Param20 327494 3850 ns/op 856 B/op 8 allocs/op -BenchmarkTigerTonic_Param20 27176 44571 ns/op 9871 B/op 119 allocs/op -BenchmarkTraffic_Param20 38828 31025 ns/op 7856 B/op 47 allocs/op -BenchmarkVulcan_Param20 560442 1807 ns/op 98 B/op 3 allocs/op - -BenchmarkAce_ParamWrite 2712150 442 ns/op 40 B/op 2 allocs/op -BenchmarkAero_ParamWrite 6392880 189 ns/op 0 B/op 0 allocs/op -BenchmarkBear_ParamWrite 1000000 1338 ns/op 456 B/op 5 allocs/op -BenchmarkBeego_ParamWrite 821431 1886 ns/op 360 B/op 4 allocs/op -BenchmarkBone_ParamWrite 913227 2350 ns/op 816 B/op 6 allocs/op -BenchmarkChi_ParamWrite 1000000 1427 ns/op 432 B/op 3 allocs/op -BenchmarkCloudyKitRouter_ParamWrite 18645724 60.9 ns/op 0 B/op 0 allocs/op -BenchmarkDenco_ParamWrite 4394764 264 ns/op 32 B/op 1 allocs/op -BenchmarkEcho_ParamWrite 5288883 242 ns/op 8 B/op 1 allocs/op -BenchmarkGin_ParamWrite 4584932 253 ns/op 0 B/op 0 allocs/op -BenchmarkGocraftWeb_ParamWrite 866242 2094 ns/op 656 B/op 9 allocs/op -BenchmarkGoji_ParamWrite 1201875 1004 ns/op 336 B/op 2 allocs/op -BenchmarkGojiv2_ParamWrite 317766 3777 ns/op 1360 B/op 13 allocs/op -BenchmarkGoJsonRest_ParamWrite 380242 3447 ns/op 1128 B/op 18 allocs/op -BenchmarkGoRestful_ParamWrite 131046 9340 ns/op 4200 B/op 15 allocs/op -BenchmarkGorillaMux_ParamWrite 298428 3970 ns/op 1280 B/op 10 allocs/op -BenchmarkGowwwRouter_ParamWrite 655940 2744 ns/op 976 B/op 8 allocs/op -BenchmarkHttpRouter_ParamWrite 5237014 219 ns/op 32 B/op 1 allocs/op -BenchmarkHttpTreeMux_ParamWrite 1379904 853 ns/op 352 B/op 3 allocs/op -BenchmarkKocha_ParamWrite 2939042 400 ns/op 56 B/op 3 allocs/op -BenchmarkLARS_ParamWrite 6181642 199 ns/op 0 B/op 0 allocs/op -BenchmarkMacaron_ParamWrite 352497 4670 ns/op 1176 B/op 14 allocs/op -BenchmarkMartini_ParamWrite 138259 8543 ns/op 1176 B/op 14 allocs/op -BenchmarkPat_ParamWrite 552386 3262 ns/op 960 B/op 15 allocs/op -BenchmarkPossum_ParamWrite 1000000 1711 ns/op 496 B/op 5 allocs/op -BenchmarkR2router_ParamWrite 1000000 1085 ns/op 432 B/op 5 allocs/op -BenchmarkRivet_ParamWrite 2374513 489 ns/op 112 B/op 2 allocs/op -BenchmarkTango_ParamWrite 1443907 812 ns/op 136 B/op 4 allocs/op -BenchmarkTigerTonic_ParamWrite 324264 4874 ns/op 1216 B/op 21 allocs/op -BenchmarkTraffic_ParamWrite 170726 7155 ns/op 2280 B/op 25 allocs/op -BenchmarkVulcan_ParamWrite 1498888 776 ns/op 98 B/op 3 allocs/op +```sh +BenchmarkGin_Param 18785022 63.9 ns/op 0 B/op 0 allocs/op +BenchmarkAce_Param 14689765 81.5 ns/op 0 B/op 0 allocs/op +BenchmarkAero_Param 23094770 51.2 ns/op 0 B/op 0 allocs/op +BenchmarkBear_Param 1417045 845 ns/op 456 B/op 5 allocs/op +BenchmarkBeego_Param 1000000 1080 ns/op 352 B/op 3 allocs/op +BenchmarkBone_Param 1000000 1463 ns/op 816 B/op 6 allocs/op +BenchmarkChi_Param 1378756 885 ns/op 432 B/op 3 allocs/op +BenchmarkDenco_Param 8557899 143 ns/op 32 B/op 1 allocs/op +BenchmarkEcho_Param 16433347 75.5 ns/op 0 B/op 0 allocs/op +BenchmarkGocraftWeb_Param 1000000 1218 ns/op 648 B/op 8 allocs/op +BenchmarkGoji_Param 1921248 617 ns/op 336 B/op 2 allocs/op +BenchmarkGojiv2_Param 561848 2156 ns/op 1328 B/op 11 allocs/op +BenchmarkGoJsonRest_Param 1000000 1358 ns/op 649 B/op 13 allocs/op +BenchmarkGoRestful_Param 224857 5307 ns/op 4192 B/op 14 allocs/op +BenchmarkGorillaMux_Param 498313 2459 ns/op 1280 B/op 10 allocs/op +BenchmarkGowwwRouter_Param 1864354 654 ns/op 432 B/op 3 allocs/op +BenchmarkHttpRouter_Param 26269074 47.7 ns/op 0 B/op 0 allocs/op +BenchmarkHttpTreeMux_Param 2109829 557 ns/op 352 B/op 3 allocs/op +BenchmarkKocha_Param 5050216 243 ns/op 56 B/op 3 allocs/op +BenchmarkLARS_Param 19811712 59.9 ns/op 0 B/op 0 allocs/op +BenchmarkMacaron_Param 662746 2329 ns/op 1072 B/op 10 allocs/op +BenchmarkMartini_Param 279902 4260 ns/op 1072 B/op 10 allocs/op +BenchmarkPat_Param 1000000 1382 ns/op 536 B/op 11 allocs/op +BenchmarkPossum_Param 1000000 1014 ns/op 496 B/op 5 allocs/op +BenchmarkR2router_Param 1712559 707 ns/op 432 B/op 5 allocs/op +BenchmarkRivet_Param 6648086 182 ns/op 48 B/op 1 allocs/op +BenchmarkTango_Param 1221504 994 ns/op 248 B/op 8 allocs/op +BenchmarkTigerTonic_Param 891661 2261 ns/op 776 B/op 16 allocs/op +BenchmarkTraffic_Param 350059 3598 ns/op 1856 B/op 21 allocs/op +BenchmarkVulcan_Param 2517823 472 ns/op 98 B/op 3 allocs/op +BenchmarkAce_Param5 9214365 130 ns/op 0 B/op 0 allocs/op +BenchmarkAero_Param5 15369013 77.9 ns/op 0 B/op 0 allocs/op +BenchmarkBear_Param5 1000000 1113 ns/op 501 B/op 5 allocs/op +BenchmarkBeego_Param5 1000000 1269 ns/op 352 B/op 3 allocs/op +BenchmarkBone_Param5 986820 1873 ns/op 864 B/op 6 allocs/op +BenchmarkChi_Param5 1000000 1156 ns/op 432 B/op 3 allocs/op +BenchmarkDenco_Param5 3036331 400 ns/op 160 B/op 1 allocs/op +BenchmarkEcho_Param5 6447133 186 ns/op 0 B/op 0 allocs/op +BenchmarkGin_Param5 10786068 110 ns/op 0 B/op 0 allocs/op +BenchmarkGocraftWeb_Param5 844820 1944 ns/op 920 B/op 11 allocs/op +BenchmarkGoji_Param5 1474965 827 ns/op 336 B/op 2 allocs/op +BenchmarkGojiv2_Param5 442820 2516 ns/op 1392 B/op 11 allocs/op +BenchmarkGoJsonRest_Param5 507555 2711 ns/op 1097 B/op 16 allocs/op +BenchmarkGoRestful_Param5 216481 6093 ns/op 4288 B/op 14 allocs/op +BenchmarkGorillaMux_Param5 314402 3628 ns/op 1344 B/op 10 allocs/op +BenchmarkGowwwRouter_Param5 1624660 733 ns/op 432 B/op 3 allocs/op +BenchmarkHttpRouter_Param5 13167324 92.0 ns/op 0 B/op 0 allocs/op +BenchmarkHttpTreeMux_Param5 1000000 1295 ns/op 576 B/op 6 allocs/op +BenchmarkKocha_Param5 1000000 1138 ns/op 440 B/op 10 allocs/op +BenchmarkLARS_Param5 11580613 105 ns/op 0 B/op 0 allocs/op +BenchmarkMacaron_Param5 473596 2755 ns/op 1072 B/op 10 allocs/op +BenchmarkMartini_Param5 230756 5111 ns/op 1232 B/op 11 allocs/op +BenchmarkPat_Param5 469190 3370 ns/op 888 B/op 29 allocs/op +BenchmarkPossum_Param5 1000000 1002 ns/op 496 B/op 5 allocs/op +BenchmarkR2router_Param5 1422129 844 ns/op 432 B/op 5 allocs/op +BenchmarkRivet_Param5 2263789 539 ns/op 240 B/op 1 allocs/op +BenchmarkTango_Param5 1000000 1256 ns/op 360 B/op 8 allocs/op +BenchmarkTigerTonic_Param5 175500 7492 ns/op 2279 B/op 39 allocs/op +BenchmarkTraffic_Param5 233631 5816 ns/op 2208 B/op 27 allocs/op +BenchmarkVulcan_Param5 1923416 629 ns/op 98 B/op 3 allocs/op +BenchmarkAce_Param20 4321266 281 ns/op 0 B/op 0 allocs/op +BenchmarkAero_Param20 31501641 35.2 ns/op 0 B/op 0 allocs/op +BenchmarkBear_Param20 335204 3489 ns/op 1665 B/op 5 allocs/op +BenchmarkBeego_Param20 503674 2860 ns/op 352 B/op 3 allocs/op +BenchmarkBone_Param20 298922 4741 ns/op 2031 B/op 6 allocs/op +BenchmarkChi_Param20 878181 1957 ns/op 432 B/op 3 allocs/op +BenchmarkDenco_Param20 1000000 1360 ns/op 640 B/op 1 allocs/op +BenchmarkEcho_Param20 2104946 580 ns/op 0 B/op 0 allocs/op +BenchmarkGin_Param20 4167204 290 ns/op 0 B/op 0 allocs/op +BenchmarkGocraftWeb_Param20 173064 7514 ns/op 3796 B/op 15 allocs/op +BenchmarkGoji_Param20 458778 2651 ns/op 1247 B/op 2 allocs/op +BenchmarkGojiv2_Param20 364862 3178 ns/op 1632 B/op 11 allocs/op +BenchmarkGoJsonRest_Param20 125514 9760 ns/op 4485 B/op 20 allocs/op +BenchmarkGoRestful_Param20 101217 11964 ns/op 6715 B/op 18 allocs/op +BenchmarkGorillaMux_Param20 147654 8132 ns/op 3452 B/op 12 allocs/op +BenchmarkGowwwRouter_Param20 1000000 1225 ns/op 432 B/op 3 allocs/op +BenchmarkHttpRouter_Param20 4920895 247 ns/op 0 B/op 0 allocs/op +BenchmarkHttpTreeMux_Param20 173202 6605 ns/op 3196 B/op 10 allocs/op +BenchmarkKocha_Param20 345988 3620 ns/op 1808 B/op 27 allocs/op +BenchmarkLARS_Param20 4592326 262 ns/op 0 B/op 0 allocs/op +BenchmarkMacaron_Param20 166492 7286 ns/op 2924 B/op 12 allocs/op +BenchmarkMartini_Param20 122162 10653 ns/op 3595 B/op 13 allocs/op +BenchmarkPat_Param20 78630 15239 ns/op 4424 B/op 93 allocs/op +BenchmarkPossum_Param20 1000000 1008 ns/op 496 B/op 5 allocs/op +BenchmarkR2router_Param20 294981 4587 ns/op 2284 B/op 7 allocs/op +BenchmarkRivet_Param20 691798 2090 ns/op 1024 B/op 1 allocs/op +BenchmarkTango_Param20 842440 2505 ns/op 856 B/op 8 allocs/op +BenchmarkTigerTonic_Param20 38614 31509 ns/op 9870 B/op 119 allocs/op +BenchmarkTraffic_Param20 57633 21107 ns/op 7853 B/op 47 allocs/op +BenchmarkVulcan_Param20 1000000 1178 ns/op 98 B/op 3 allocs/op +BenchmarkAce_ParamWrite 7330743 180 ns/op 8 B/op 1 allocs/op +BenchmarkAero_ParamWrite 13833598 86.7 ns/op 0 B/op 0 allocs/op +BenchmarkBear_ParamWrite 1363321 867 ns/op 456 B/op 5 allocs/op +BenchmarkBeego_ParamWrite 1000000 1104 ns/op 360 B/op 4 allocs/op +BenchmarkBone_ParamWrite 1000000 1475 ns/op 816 B/op 6 allocs/op +BenchmarkChi_ParamWrite 1320590 892 ns/op 432 B/op 3 allocs/op +BenchmarkDenco_ParamWrite 7093605 172 ns/op 32 B/op 1 allocs/op +BenchmarkEcho_ParamWrite 8434424 161 ns/op 8 B/op 1 allocs/op +BenchmarkGin_ParamWrite 10377034 118 ns/op 0 B/op 0 allocs/op +BenchmarkGocraftWeb_ParamWrite 1000000 1266 ns/op 656 B/op 9 allocs/op +BenchmarkGoji_ParamWrite 1874168 654 ns/op 336 B/op 2 allocs/op +BenchmarkGojiv2_ParamWrite 459032 2352 ns/op 1360 B/op 13 allocs/op +BenchmarkGoJsonRest_ParamWrite 499434 2145 ns/op 1128 B/op 18 allocs/op +BenchmarkGoRestful_ParamWrite 241087 5470 ns/op 4200 B/op 15 allocs/op +BenchmarkGorillaMux_ParamWrite 425686 2522 ns/op 1280 B/op 10 allocs/op +BenchmarkGowwwRouter_ParamWrite 922172 1778 ns/op 976 B/op 8 allocs/op +BenchmarkHttpRouter_ParamWrite 15392049 77.7 ns/op 0 B/op 0 allocs/op +BenchmarkHttpTreeMux_ParamWrite 1973385 597 ns/op 352 B/op 3 allocs/op +BenchmarkKocha_ParamWrite 4262500 281 ns/op 56 B/op 3 allocs/op +BenchmarkLARS_ParamWrite 10764410 113 ns/op 0 B/op 0 allocs/op +BenchmarkMacaron_ParamWrite 486769 2726 ns/op 1176 B/op 14 allocs/op +BenchmarkMartini_ParamWrite 264804 4842 ns/op 1176 B/op 14 allocs/op +BenchmarkPat_ParamWrite 735116 2047 ns/op 960 B/op 15 allocs/op +BenchmarkPossum_ParamWrite 1000000 1004 ns/op 496 B/op 5 allocs/op +BenchmarkR2router_ParamWrite 1592136 768 ns/op 432 B/op 5 allocs/op +BenchmarkRivet_ParamWrite 3582051 339 ns/op 112 B/op 2 allocs/op +BenchmarkTango_ParamWrite 2237337 534 ns/op 136 B/op 4 allocs/op +BenchmarkTigerTonic_ParamWrite 439608 3136 ns/op 1216 B/op 21 allocs/op +BenchmarkTraffic_ParamWrite 306979 4328 ns/op 2280 B/op 25 allocs/op +BenchmarkVulcan_ParamWrite 2529973 472 ns/op 98 B/op 3 allocs/op ``` ## GitHub -``` -BenchmarkGin_GithubStatic 5866748 194 ns/op 0 B/op 0 allocs/op +```sh +BenchmarkGin_GithubStatic 15629472 76.7 ns/op 0 B/op 0 allocs/op -BenchmarkAce_GithubStatic 5815826 205 ns/op 0 B/op 0 allocs/op -BenchmarkAero_GithubStatic 10822906 106 ns/op 0 B/op 0 allocs/op -BenchmarkBear_GithubStatic 1678065 707 ns/op 120 B/op 3 allocs/op -BenchmarkBeego_GithubStatic 828814 1717 ns/op 352 B/op 3 allocs/op -BenchmarkBone_GithubStatic 67484 18858 ns/op 2880 B/op 60 allocs/op -BenchmarkCloudyKitRouter_GithubStatic 10219297 115 ns/op 0 B/op 0 allocs/op -BenchmarkChi_GithubStatic 1000000 1348 ns/op 432 B/op 3 allocs/op -BenchmarkDenco_GithubStatic 15220622 75.4 ns/op 0 B/op 0 allocs/op -BenchmarkEcho_GithubStatic 7255897 158 ns/op 0 B/op 0 allocs/op -BenchmarkGocraftWeb_GithubStatic 1000000 1198 ns/op 296 B/op 5 allocs/op -BenchmarkGoji_GithubStatic 3659361 320 ns/op 0 B/op 0 allocs/op -BenchmarkGojiv2_GithubStatic 402402 3384 ns/op 1312 B/op 10 allocs/op -BenchmarkGoRestful_GithubStatic 54592 22045 ns/op 4256 B/op 13 allocs/op -BenchmarkGoJsonRest_GithubStatic 801067 1673 ns/op 329 B/op 11 allocs/op -BenchmarkGorillaMux_GithubStatic 169690 8171 ns/op 976 B/op 9 allocs/op -BenchmarkGowwwRouter_GithubStatic 5372910 218 ns/op 0 B/op 0 allocs/op -BenchmarkHttpRouter_GithubStatic 10965576 103 ns/op 0 B/op 0 allocs/op -BenchmarkHttpTreeMux_GithubStatic 10505365 106 ns/op 0 B/op 0 allocs/op -BenchmarkKocha_GithubStatic 14153763 81.9 ns/op 0 B/op 0 allocs/op -BenchmarkLARS_GithubStatic 7874017 152 ns/op 0 B/op 0 allocs/op -BenchmarkMacaron_GithubStatic 696940 2678 ns/op 736 B/op 8 allocs/op -BenchmarkMartini_GithubStatic 102384 12276 ns/op 768 B/op 9 allocs/op -BenchmarkPat_GithubStatic 69907 17437 ns/op 3648 B/op 76 allocs/op -BenchmarkPossum_GithubStatic 1000000 1262 ns/op 416 B/op 3 allocs/op -BenchmarkR2router_GithubStatic 1981592 614 ns/op 144 B/op 4 allocs/op -BenchmarkRivet_GithubStatic 6103872 196 ns/op 0 B/op 0 allocs/op -BenchmarkTango_GithubStatic 629551 2023 ns/op 248 B/op 8 allocs/op -BenchmarkTigerTonic_GithubStatic 2801569 424 ns/op 48 B/op 1 allocs/op -BenchmarkTraffic_GithubStatic 63716 18009 ns/op 4664 B/op 90 allocs/op -BenchmarkVulcan_GithubStatic 885640 1177 ns/op 98 B/op 3 allocs/op - -BenchmarkAce_GithubParam 2016942 582 ns/op 96 B/op 1 allocs/op -BenchmarkAero_GithubParam 4009522 296 ns/op 0 B/op 0 allocs/op -BenchmarkBear_GithubParam 1000000 1575 ns/op 496 B/op 5 allocs/op -BenchmarkBeego_GithubParam 796662 2038 ns/op 352 B/op 3 allocs/op -BenchmarkBone_GithubParam 114823 10325 ns/op 1888 B/op 19 allocs/op -BenchmarkChi_GithubParam 1000000 1783 ns/op 432 B/op 3 allocs/op -BenchmarkCloudyKitRouter_GithubParam 3910996 303 ns/op 0 B/op 0 allocs/op -BenchmarkDenco_GithubParam 2298172 521 ns/op 128 B/op 1 allocs/op -BenchmarkEcho_GithubParam 3336364 357 ns/op 0 B/op 0 allocs/op -BenchmarkGin_GithubParam 2729161 439 ns/op 0 B/op 0 allocs/op -BenchmarkGocraftWeb_GithubParam 825784 2338 ns/op 712 B/op 9 allocs/op -BenchmarkGoji_GithubParam 933397 1559 ns/op 336 B/op 2 allocs/op -BenchmarkGojiv2_GithubParam 253884 4335 ns/op 1408 B/op 13 allocs/op -BenchmarkGoJsonRest_GithubParam 575532 2967 ns/op 713 B/op 14 allocs/op -BenchmarkGoRestful_GithubParam 38160 30638 ns/op 4352 B/op 16 allocs/op -BenchmarkGorillaMux_GithubParam 94554 12035 ns/op 1296 B/op 10 allocs/op -BenchmarkGowwwRouter_GithubParam 1000000 1223 ns/op 432 B/op 3 allocs/op -BenchmarkHttpRouter_GithubParam 2562079 468 ns/op 96 B/op 1 allocs/op -BenchmarkHttpTreeMux_GithubParam 1000000 1386 ns/op 384 B/op 4 allocs/op -BenchmarkKocha_GithubParam 1573026 754 ns/op 128 B/op 5 allocs/op -BenchmarkLARS_GithubParam 4203394 282 ns/op 0 B/op 0 allocs/op -BenchmarkMacaron_GithubParam 365078 4137 ns/op 1072 B/op 10 allocs/op -BenchmarkMartini_GithubParam 71608 15811 ns/op 1152 B/op 11 allocs/op -BenchmarkPat_GithubParam 92768 13297 ns/op 2408 B/op 48 allocs/op -BenchmarkPossum_GithubParam 1000000 1704 ns/op 496 B/op 5 allocs/op -BenchmarkR2router_GithubParam 1000000 1120 ns/op 432 B/op 5 allocs/op -BenchmarkRivet_GithubParam 1642794 720 ns/op 96 B/op 1 allocs/op -BenchmarkTango_GithubParam 574195 2345 ns/op 344 B/op 8 allocs/op -BenchmarkTigerTonic_GithubParam 272430 5493 ns/op 1176 B/op 22 allocs/op -BenchmarkTraffic_GithubParam 81914 15078 ns/op 2816 B/op 40 allocs/op -BenchmarkVulcan_GithubParam 581272 1902 ns/op 98 B/op 3 allocs/op - - -BenchmarkAce_GithubAll 10000 103571 ns/op 13792 B/op 167 allocs/op -BenchmarkAero_GithubAll 21366 55615 ns/op 0 B/op 0 allocs/op -BenchmarkBear_GithubAll 5288 327648 ns/op 86448 B/op 943 allocs/op -BenchmarkBeego_GithubAll 3974 413453 ns/op 71456 B/op 609 allocs/op -BenchmarkBone_GithubAll 267 4450294 ns/op 720160 B/op 8620 allocs/op -BenchmarkChi_GithubAll 5067 358773 ns/op 87696 B/op 609 allocs/op -BenchmarkCloudyKitRouter_GithubAll 24210 49233 ns/op 0 B/op 0 allocs/op -BenchmarkDenco_GithubAll 12508 95341 ns/op 20224 B/op 167 allocs/op -BenchmarkEcho_GithubAll 16353 73267 ns/op 0 B/op 0 allocs/op -BenchmarkGin_GithubAll 15516 77716 ns/op 0 B/op 0 allocs/op -BenchmarkGocraftWeb_GithubAll 2908 466970 ns/op 131656 B/op 1686 allocs/op -BenchmarkGoji_GithubAll 1746 691392 ns/op 56112 B/op 334 allocs/op -BenchmarkGojiv2_GithubAll 954 1289604 ns/op 352720 B/op 4321 allocs/op -BenchmarkGoJsonRest_GithubAll 2013 599088 ns/op 134371 B/op 2737 allocs/op -BenchmarkGoRestful_GithubAll 223 5404307 ns/op 910144 B/op 2938 allocs/op -BenchmarkGorillaMux_GithubAll 202 5943565 ns/op 251650 B/op 1994 allocs/op -BenchmarkGowwwRouter_GithubAll 9009 227799 ns/op 72144 B/op 501 allocs/op -BenchmarkHttpRouter_GithubAll 14570 78718 ns/op 13792 B/op 167 allocs/op -BenchmarkHttpTreeMux_GithubAll 7226 242491 ns/op 65856 B/op 671 allocs/op -BenchmarkKocha_GithubAll 8282 159873 ns/op 23304 B/op 843 allocs/op -BenchmarkLARS_GithubAll 22711 52745 ns/op 0 B/op 0 allocs/op -BenchmarkMacaron_GithubAll 2067 563117 ns/op 149409 B/op 1624 allocs/op -BenchmarkMartini_GithubAll 218 5455290 ns/op 226552 B/op 2325 allocs/op -BenchmarkPat_GithubAll 174 6801582 ns/op 1483152 B/op 26963 allocs/op -BenchmarkPossum_GithubAll 8113 263665 ns/op 84448 B/op 609 allocs/op -BenchmarkR2router_GithubAll 7172 247198 ns/op 77328 B/op 979 allocs/op -BenchmarkRivet_GithubAll 10000 128086 ns/op 16272 B/op 167 allocs/op -BenchmarkTango_GithubAll 3316 472753 ns/op 63825 B/op 1618 allocs/op -BenchmarkTigerTonic_GithubAll 1176 1041991 ns/op 193856 B/op 4474 allocs/op -BenchmarkTraffic_GithubAll 226 5312082 ns/op 820742 B/op 14114 allocs/op -BenchmarkVulcan_GithubAll 3904 304440 ns/op 19894 B/op 609 allocs/op +BenchmarkAce_GithubStatic 15542612 75.9 ns/op 0 B/op 0 allocs/op +BenchmarkAero_GithubStatic 24777151 48.5 ns/op 0 B/op 0 allocs/op +BenchmarkBear_GithubStatic 2788894 435 ns/op 120 B/op 3 allocs/op +BenchmarkBeego_GithubStatic 1000000 1064 ns/op 352 B/op 3 allocs/op +BenchmarkBone_GithubStatic 93507 12838 ns/op 2880 B/op 60 allocs/op +BenchmarkChi_GithubStatic 1387743 860 ns/op 432 B/op 3 allocs/op +BenchmarkDenco_GithubStatic 39384996 30.4 ns/op 0 B/op 0 allocs/op +BenchmarkEcho_GithubStatic 12076382 99.1 ns/op 0 B/op 0 allocs/op +BenchmarkGocraftWeb_GithubStatic 1596495 756 ns/op 296 B/op 5 allocs/op +BenchmarkGoji_GithubStatic 6364876 189 ns/op 0 B/op 0 allocs/op +BenchmarkGojiv2_GithubStatic 550202 2098 ns/op 1312 B/op 10 allocs/op +BenchmarkGoRestful_GithubStatic 102183 12552 ns/op 4256 B/op 13 allocs/op +BenchmarkGoJsonRest_GithubStatic 1000000 1029 ns/op 329 B/op 11 allocs/op +BenchmarkGorillaMux_GithubStatic 255552 5190 ns/op 976 B/op 9 allocs/op +BenchmarkGowwwRouter_GithubStatic 15531916 77.1 ns/op 0 B/op 0 allocs/op +BenchmarkHttpRouter_GithubStatic 27920724 43.1 ns/op 0 B/op 0 allocs/op +BenchmarkHttpTreeMux_GithubStatic 21448953 55.8 ns/op 0 B/op 0 allocs/op +BenchmarkKocha_GithubStatic 21405310 56.0 ns/op 0 B/op 0 allocs/op +BenchmarkLARS_GithubStatic 13625156 89.0 ns/op 0 B/op 0 allocs/op +BenchmarkMacaron_GithubStatic 1000000 1747 ns/op 736 B/op 8 allocs/op +BenchmarkMartini_GithubStatic 187186 7326 ns/op 768 B/op 9 allocs/op +BenchmarkPat_GithubStatic 109143 11563 ns/op 3648 B/op 76 allocs/op +BenchmarkPossum_GithubStatic 1575898 770 ns/op 416 B/op 3 allocs/op +BenchmarkR2router_GithubStatic 3046231 404 ns/op 144 B/op 4 allocs/op +BenchmarkRivet_GithubStatic 11484826 105 ns/op 0 B/op 0 allocs/op +BenchmarkTango_GithubStatic 1000000 1153 ns/op 248 B/op 8 allocs/op +BenchmarkTigerTonic_GithubStatic 4929780 249 ns/op 48 B/op 1 allocs/op +BenchmarkTraffic_GithubStatic 106351 11819 ns/op 4664 B/op 90 allocs/op +BenchmarkVulcan_GithubStatic 1613271 722 ns/op 98 B/op 3 allocs/op +BenchmarkAce_GithubParam 8386032 143 ns/op 0 B/op 0 allocs/op +BenchmarkAero_GithubParam 11816200 102 ns/op 0 B/op 0 allocs/op +BenchmarkBear_GithubParam 1000000 1012 ns/op 496 B/op 5 allocs/op +BenchmarkBeego_GithubParam 1000000 1157 ns/op 352 B/op 3 allocs/op +BenchmarkBone_GithubParam 184653 6912 ns/op 1888 B/op 19 allocs/op +BenchmarkChi_GithubParam 1000000 1102 ns/op 432 B/op 3 allocs/op +BenchmarkDenco_GithubParam 3484798 352 ns/op 128 B/op 1 allocs/op +BenchmarkEcho_GithubParam 6337380 189 ns/op 0 B/op 0 allocs/op +BenchmarkGin_GithubParam 9132032 131 ns/op 0 B/op 0 allocs/op +BenchmarkGocraftWeb_GithubParam 1000000 1446 ns/op 712 B/op 9 allocs/op +BenchmarkGoji_GithubParam 1248640 977 ns/op 336 B/op 2 allocs/op +BenchmarkGojiv2_GithubParam 383233 2784 ns/op 1408 B/op 13 allocs/op +BenchmarkGoJsonRest_GithubParam 1000000 1991 ns/op 713 B/op 14 allocs/op +BenchmarkGoRestful_GithubParam 76414 16015 ns/op 4352 B/op 16 allocs/op +BenchmarkGorillaMux_GithubParam 150026 7663 ns/op 1296 B/op 10 allocs/op +BenchmarkGowwwRouter_GithubParam 1592044 751 ns/op 432 B/op 3 allocs/op +BenchmarkHttpRouter_GithubParam 10420628 115 ns/op 0 B/op 0 allocs/op +BenchmarkHttpTreeMux_GithubParam 1403755 835 ns/op 384 B/op 4 allocs/op +BenchmarkKocha_GithubParam 2286170 533 ns/op 128 B/op 5 allocs/op +BenchmarkLARS_GithubParam 9540374 129 ns/op 0 B/op 0 allocs/op +BenchmarkMacaron_GithubParam 533154 2742 ns/op 1072 B/op 10 allocs/op +BenchmarkMartini_GithubParam 119397 9638 ns/op 1152 B/op 11 allocs/op +BenchmarkPat_GithubParam 150675 8858 ns/op 2408 B/op 48 allocs/op +BenchmarkPossum_GithubParam 1000000 1001 ns/op 496 B/op 5 allocs/op +BenchmarkR2router_GithubParam 1602886 761 ns/op 432 B/op 5 allocs/op +BenchmarkRivet_GithubParam 2986579 409 ns/op 96 B/op 1 allocs/op +BenchmarkTango_GithubParam 1000000 1356 ns/op 344 B/op 8 allocs/op +BenchmarkTigerTonic_GithubParam 388899 3429 ns/op 1176 B/op 22 allocs/op +BenchmarkTraffic_GithubParam 123160 9734 ns/op 2816 B/op 40 allocs/op +BenchmarkVulcan_GithubParam 1000000 1138 ns/op 98 B/op 3 allocs/op +BenchmarkAce_GithubAll 40543 29670 ns/op 0 B/op 0 allocs/op +BenchmarkAero_GithubAll 57632 20648 ns/op 0 B/op 0 allocs/op +BenchmarkBear_GithubAll 9234 216179 ns/op 86448 B/op 943 allocs/op +BenchmarkBeego_GithubAll 7407 243496 ns/op 71456 B/op 609 allocs/op +BenchmarkBone_GithubAll 420 2922835 ns/op 720160 B/op 8620 allocs/op +BenchmarkChi_GithubAll 7620 238331 ns/op 87696 B/op 609 allocs/op +BenchmarkDenco_GithubAll 18355 64494 ns/op 20224 B/op 167 allocs/op +BenchmarkEcho_GithubAll 31251 38479 ns/op 0 B/op 0 allocs/op +BenchmarkGin_GithubAll 43550 27364 ns/op 0 B/op 0 allocs/op +BenchmarkGocraftWeb_GithubAll 4117 300062 ns/op 131656 B/op 1686 allocs/op +BenchmarkGoji_GithubAll 3274 416158 ns/op 56112 B/op 334 allocs/op +BenchmarkGojiv2_GithubAll 1402 870518 ns/op 352720 B/op 4321 allocs/op +BenchmarkGoJsonRest_GithubAll 2976 401507 ns/op 134371 B/op 2737 allocs/op +BenchmarkGoRestful_GithubAll 410 2913158 ns/op 910144 B/op 2938 allocs/op +BenchmarkGorillaMux_GithubAll 346 3384987 ns/op 251650 B/op 1994 allocs/op +BenchmarkGowwwRouter_GithubAll 10000 143025 ns/op 72144 B/op 501 allocs/op +BenchmarkHttpRouter_GithubAll 55938 21360 ns/op 0 B/op 0 allocs/op +BenchmarkHttpTreeMux_GithubAll 10000 153944 ns/op 65856 B/op 671 allocs/op +BenchmarkKocha_GithubAll 10000 106315 ns/op 23304 B/op 843 allocs/op +BenchmarkLARS_GithubAll 47779 25084 ns/op 0 B/op 0 allocs/op +BenchmarkMacaron_GithubAll 3266 371907 ns/op 149409 B/op 1624 allocs/op +BenchmarkMartini_GithubAll 331 3444706 ns/op 226551 B/op 2325 allocs/op +BenchmarkPat_GithubAll 273 4381818 ns/op 1483152 B/op 26963 allocs/op +BenchmarkPossum_GithubAll 10000 164367 ns/op 84448 B/op 609 allocs/op +BenchmarkR2router_GithubAll 10000 160220 ns/op 77328 B/op 979 allocs/op +BenchmarkRivet_GithubAll 14625 82453 ns/op 16272 B/op 167 allocs/op +BenchmarkTango_GithubAll 6255 279611 ns/op 63826 B/op 1618 allocs/op +BenchmarkTigerTonic_GithubAll 2008 687874 ns/op 193856 B/op 4474 allocs/op +BenchmarkTraffic_GithubAll 355 3478508 ns/op 820744 B/op 14114 allocs/op +BenchmarkVulcan_GithubAll 6885 193333 ns/op 19894 B/op 609 allocs/op ``` ## Google+ -``` -BenchmarkGin_GPlusStatic 9172405 124 ns/op 0 B/op 0 allocs/op +```sh +BenchmarkGin_GPlusStatic 19247326 62.2 ns/op 0 B/op 0 allocs/op -BenchmarkAce_GPlusStatic 7784710 152 ns/op 0 B/op 0 allocs/op -BenchmarkAero_GPlusStatic 12771894 89.2 ns/op 0 B/op 0 allocs/op -BenchmarkBear_GPlusStatic 2351325 512 ns/op 104 B/op 3 allocs/op -BenchmarkBeego_GPlusStatic 1000000 1643 ns/op 352 B/op 3 allocs/op -BenchmarkBone_GPlusStatic 4419217 263 ns/op 32 B/op 1 allocs/op -BenchmarkChi_GPlusStatic 1000000 1282 ns/op 432 B/op 3 allocs/op -BenchmarkCloudyKitRouter_GPlusStatic 17730754 61.9 ns/op 0 B/op 0 allocs/op -BenchmarkDenco_GPlusStatic 29549895 38.3 ns/op 0 B/op 0 allocs/op -BenchmarkEcho_GPlusStatic 10521789 111 ns/op 0 B/op 0 allocs/op -BenchmarkGocraftWeb_GPlusStatic 1000000 1053 ns/op 280 B/op 5 allocs/op -BenchmarkGoji_GPlusStatic 5209968 228 ns/op 0 B/op 0 allocs/op -BenchmarkGojiv2_GPlusStatic 306363 3348 ns/op 1312 B/op 10 allocs/op -BenchmarkGoJsonRest_GPlusStatic 1000000 1424 ns/op 329 B/op 11 allocs/op -BenchmarkGoRestful_GPlusStatic 130754 8760 ns/op 3872 B/op 13 allocs/op -BenchmarkGorillaMux_GPlusStatic 496250 2860 ns/op 976 B/op 9 allocs/op -BenchmarkGowwwRouter_GPlusStatic 16401519 66.5 ns/op 0 B/op 0 allocs/op -BenchmarkHttpRouter_GPlusStatic 21323139 50.3 ns/op 0 B/op 0 allocs/op -BenchmarkHttpTreeMux_GPlusStatic 14877926 68.7 ns/op 0 B/op 0 allocs/op -BenchmarkKocha_GPlusStatic 18375128 57.6 ns/op 0 B/op 0 allocs/op -BenchmarkLARS_GPlusStatic 11153810 101 ns/op 0 B/op 0 allocs/op -BenchmarkMacaron_GPlusStatic 652598 2720 ns/op 736 B/op 8 allocs/op -BenchmarkMartini_GPlusStatic 218824 6532 ns/op 768 B/op 9 allocs/op -BenchmarkPat_GPlusStatic 2825560 428 ns/op 96 B/op 2 allocs/op -BenchmarkPossum_GPlusStatic 1000000 1236 ns/op 416 B/op 3 allocs/op -BenchmarkR2router_GPlusStatic 2222193 541 ns/op 144 B/op 4 allocs/op -BenchmarkRivet_GPlusStatic 9802023 114 ns/op 0 B/op 0 allocs/op -BenchmarkTango_GPlusStatic 980658 1465 ns/op 200 B/op 8 allocs/op -BenchmarkTigerTonic_GPlusStatic 4882701 239 ns/op 32 B/op 1 allocs/op -BenchmarkTraffic_GPlusStatic 508060 3465 ns/op 1112 B/op 16 allocs/op -BenchmarkVulcan_GPlusStatic 1608979 725 ns/op 98 B/op 3 allocs/op - -BenchmarkAce_GPlusParam 2962957 414 ns/op 64 B/op 1 allocs/op -BenchmarkAero_GPlusParam 5667668 202 ns/op 0 B/op 0 allocs/op -BenchmarkBear_GPlusParam 1000000 1271 ns/op 480 B/op 5 allocs/op -BenchmarkBeego_GPlusParam 869858 1874 ns/op 352 B/op 3 allocs/op -BenchmarkBone_GPlusParam 869476 2395 ns/op 816 B/op 6 allocs/op -BenchmarkChi_GPlusParam 1000000 1469 ns/op 432 B/op 3 allocs/op -BenchmarkCloudyKitRouter_GPlusParam 11149783 108 ns/op 0 B/op 0 allocs/op -BenchmarkDenco_GPlusParam 4007298 301 ns/op 64 B/op 1 allocs/op -BenchmarkEcho_GPlusParam 6448201 174 ns/op 0 B/op 0 allocs/op -BenchmarkGin_GPlusParam 5470827 218 ns/op 0 B/op 0 allocs/op -BenchmarkGocraftWeb_GPlusParam 1000000 1939 ns/op 648 B/op 8 allocs/op -BenchmarkGoji_GPlusParam 1207621 997 ns/op 336 B/op 2 allocs/op -BenchmarkGojiv2_GPlusParam 271326 4013 ns/op 1328 B/op 11 allocs/op -BenchmarkGoJsonRest_GPlusParam 781062 2303 ns/op 649 B/op 13 allocs/op -BenchmarkGoRestful_GPlusParam 121267 9871 ns/op 4192 B/op 14 allocs/op -BenchmarkGorillaMux_GPlusParam 228406 5156 ns/op 1280 B/op 10 allocs/op -BenchmarkGowwwRouter_GPlusParam 1000000 1074 ns/op 432 B/op 3 allocs/op -BenchmarkHttpRouter_GPlusParam 4399740 276 ns/op 64 B/op 1 allocs/op -BenchmarkHttpTreeMux_GPlusParam 1309540 898 ns/op 352 B/op 3 allocs/op -BenchmarkKocha_GPlusParam 2930965 403 ns/op 56 B/op 3 allocs/op -BenchmarkLARS_GPlusParam 7588237 151 ns/op 0 B/op 0 allocs/op -BenchmarkMacaron_GPlusParam 434997 4195 ns/op 1072 B/op 10 allocs/op -BenchmarkMartini_GPlusParam 148207 8144 ns/op 1072 B/op 10 allocs/op -BenchmarkPat_GPlusParam 566829 2533 ns/op 576 B/op 11 allocs/op -BenchmarkPossum_GPlusParam 1000000 1723 ns/op 496 B/op 5 allocs/op -BenchmarkR2router_GPlusParam 1000000 1100 ns/op 432 B/op 5 allocs/op -BenchmarkRivet_GPlusParam 3309052 331 ns/op 48 B/op 1 allocs/op -BenchmarkTango_GPlusParam 693728 1825 ns/op 264 B/op 8 allocs/op -BenchmarkTigerTonic_GPlusParam 417693 3800 ns/op 856 B/op 16 allocs/op -BenchmarkTraffic_GPlusParam 179424 6641 ns/op 1872 B/op 21 allocs/op -BenchmarkVulcan_GPlusParam 1000000 1063 ns/op 98 B/op 3 allocs/op - -BenchmarkAce_GPlus2Params 2720149 460 ns/op 64 B/op 1 allocs/op -BenchmarkAero_GPlus2Params 3525165 343 ns/op 0 B/op 0 allocs/op -BenchmarkBear_GPlus2Params 1000000 1502 ns/op 496 B/op 5 allocs/op -BenchmarkBeego_GPlus2Params 730123 2102 ns/op 352 B/op 3 allocs/op -BenchmarkBone_GPlus2Params 253177 5583 ns/op 1168 B/op 10 allocs/op -BenchmarkChi_GPlus2Params 1000000 1531 ns/op 432 B/op 3 allocs/op -BenchmarkCloudyKitRouter_GPlus2Params 6943176 168 ns/op 0 B/op 0 allocs/op -BenchmarkDenco_GPlus2Params 2912601 413 ns/op 64 B/op 1 allocs/op -BenchmarkEcho_GPlus2Params 4149189 278 ns/op 0 B/op 0 allocs/op -BenchmarkGin_GPlus2Params 3271269 356 ns/op 0 B/op 0 allocs/op -BenchmarkGocraftWeb_GPlus2Params 915531 2321 ns/op 712 B/op 9 allocs/op -BenchmarkGoji_GPlus2Params 1000000 1413 ns/op 336 B/op 2 allocs/op -BenchmarkGojiv2_GPlus2Params 256640 4521 ns/op 1408 B/op 14 allocs/op -BenchmarkGoJsonRest_GPlus2Params 499140 3076 ns/op 713 B/op 14 allocs/op -BenchmarkGoRestful_GPlus2Params 105928 10148 ns/op 4384 B/op 16 allocs/op -BenchmarkGorillaMux_GPlus2Params 110953 9682 ns/op 1296 B/op 10 allocs/op -BenchmarkGowwwRouter_GPlus2Params 1000000 1112 ns/op 432 B/op 3 allocs/op -BenchmarkHttpRouter_GPlus2Params 3491893 321 ns/op 64 B/op 1 allocs/op -BenchmarkHttpTreeMux_GPlus2Params 1000000 1341 ns/op 384 B/op 4 allocs/op -BenchmarkKocha_GPlus2Params 1445288 790 ns/op 128 B/op 5 allocs/op -BenchmarkLARS_GPlus2Params 6644953 185 ns/op 0 B/op 0 allocs/op -BenchmarkMacaron_GPlus2Params 424291 4321 ns/op 1072 B/op 10 allocs/op -BenchmarkMartini_GPlus2Params 70866 16407 ns/op 1200 B/op 13 allocs/op -BenchmarkPat_GPlus2Params 121308 10221 ns/op 2168 B/op 33 allocs/op -BenchmarkPossum_GPlus2Params 1000000 1847 ns/op 496 B/op 5 allocs/op -BenchmarkR2router_GPlus2Params 1000000 1267 ns/op 432 B/op 5 allocs/op -BenchmarkRivet_GPlus2Params 2017526 590 ns/op 96 B/op 1 allocs/op -BenchmarkTango_GPlus2Params 846003 2143 ns/op 344 B/op 8 allocs/op -BenchmarkTigerTonic_GPlus2Params 303597 5736 ns/op 1200 B/op 22 allocs/op -BenchmarkTraffic_GPlus2Params 95032 12817 ns/op 2248 B/op 28 allocs/op -BenchmarkVulcan_GPlus2Params 692610 1575 ns/op 98 B/op 3 allocs/op - -BenchmarkAce_GPlusAll 271720 4948 ns/op 640 B/op 11 allocs/op -BenchmarkAero_GPlusAll 367956 2926 ns/op 0 B/op 0 allocs/op -BenchmarkBear_GPlusAll 68161 17883 ns/op 5488 B/op 61 allocs/op -BenchmarkBeego_GPlusAll 46634 25369 ns/op 4576 B/op 39 allocs/op -BenchmarkBone_GPlusAll 24628 49198 ns/op 11744 B/op 109 allocs/op -BenchmarkChi_GPlusAll 60778 19356 ns/op 5616 B/op 39 allocs/op -BenchmarkCloudyKitRouter_GPlusAll 706952 1693 ns/op 0 B/op 0 allocs/op -BenchmarkDenco_GPlusAll 327422 4222 ns/op 672 B/op 11 allocs/op -BenchmarkEcho_GPlusAll 331987 3176 ns/op 0 B/op 0 allocs/op -BenchmarkGin_GPlusAll 289526 3559 ns/op 0 B/op 0 allocs/op -BenchmarkGocraftWeb_GPlusAll 45805 26768 ns/op 8040 B/op 103 allocs/op -BenchmarkGoji_GPlusAll 74786 14428 ns/op 3696 B/op 22 allocs/op -BenchmarkGojiv2_GPlusAll 23822 50355 ns/op 17616 B/op 154 allocs/op -BenchmarkGoJsonRest_GPlusAll 35280 32989 ns/op 8117 B/op 170 allocs/op -BenchmarkGoRestful_GPlusAll 10000 129418 ns/op 55520 B/op 192 allocs/op -BenchmarkGorillaMux_GPlusAll 15968 76492 ns/op 16112 B/op 128 allocs/op -BenchmarkGowwwRouter_GPlusAll 100096 12644 ns/op 4752 B/op 33 allocs/op -BenchmarkHttpRouter_GPlusAll 474584 3704 ns/op 640 B/op 11 allocs/op -BenchmarkHttpTreeMux_GPlusAll 98506 12480 ns/op 4032 B/op 38 allocs/op -BenchmarkKocha_GPlusAll 213709 7358 ns/op 976 B/op 43 allocs/op -BenchmarkLARS_GPlusAll 466608 2363 ns/op 0 B/op 0 allocs/op -BenchmarkMacaron_GPlusAll 34136 35790 ns/op 9568 B/op 104 allocs/op -BenchmarkMartini_GPlusAll 8911 124543 ns/op 14016 B/op 145 allocs/op -BenchmarkPat_GPlusAll 17391 69198 ns/op 15264 B/op 271 allocs/op -BenchmarkPossum_GPlusAll 66774 17004 ns/op 5408 B/op 39 allocs/op -BenchmarkR2router_GPlusAll 79681 13996 ns/op 5040 B/op 63 allocs/op -BenchmarkRivet_GPlusAll 258788 5344 ns/op 768 B/op 11 allocs/op -BenchmarkTango_GPlusAll 46930 25591 ns/op 3656 B/op 104 allocs/op -BenchmarkTigerTonic_GPlusAll 20768 58038 ns/op 11600 B/op 242 allocs/op -BenchmarkTraffic_GPlusAll 10000 108031 ns/op 26248 B/op 341 allocs/op -BenchmarkVulcan_GPlusAll 71826 15724 ns/op 1274 B/op 39 allocs/op +BenchmarkAce_GPlusStatic 20235060 59.2 ns/op 0 B/op 0 allocs/op +BenchmarkAero_GPlusStatic 31978935 37.6 ns/op 0 B/op 0 allocs/op +BenchmarkBear_GPlusStatic 3516523 341 ns/op 104 B/op 3 allocs/op +BenchmarkBeego_GPlusStatic 1212036 991 ns/op 352 B/op 3 allocs/op +BenchmarkBone_GPlusStatic 6736242 183 ns/op 32 B/op 1 allocs/op +BenchmarkChi_GPlusStatic 1490640 814 ns/op 432 B/op 3 allocs/op +BenchmarkDenco_GPlusStatic 55006856 21.8 ns/op 0 B/op 0 allocs/op +BenchmarkEcho_GPlusStatic 17688258 67.9 ns/op 0 B/op 0 allocs/op +BenchmarkGocraftWeb_GPlusStatic 1829181 666 ns/op 280 B/op 5 allocs/op +BenchmarkGoji_GPlusStatic 9147451 130 ns/op 0 B/op 0 allocs/op +BenchmarkGojiv2_GPlusStatic 594015 2063 ns/op 1312 B/op 10 allocs/op +BenchmarkGoJsonRest_GPlusStatic 1264906 950 ns/op 329 B/op 11 allocs/op +BenchmarkGoRestful_GPlusStatic 231558 5341 ns/op 3872 B/op 13 allocs/op +BenchmarkGorillaMux_GPlusStatic 908418 1809 ns/op 976 B/op 9 allocs/op +BenchmarkGowwwRouter_GPlusStatic 40684604 29.5 ns/op 0 B/op 0 allocs/op +BenchmarkHttpRouter_GPlusStatic 46742804 25.7 ns/op 0 B/op 0 allocs/op +BenchmarkHttpTreeMux_GPlusStatic 32567161 36.9 ns/op 0 B/op 0 allocs/op +BenchmarkKocha_GPlusStatic 33800060 35.3 ns/op 0 B/op 0 allocs/op +BenchmarkLARS_GPlusStatic 20431858 60.0 ns/op 0 B/op 0 allocs/op +BenchmarkMacaron_GPlusStatic 1000000 1745 ns/op 736 B/op 8 allocs/op +BenchmarkMartini_GPlusStatic 442248 3619 ns/op 768 B/op 9 allocs/op +BenchmarkPat_GPlusStatic 4328004 292 ns/op 96 B/op 2 allocs/op +BenchmarkPossum_GPlusStatic 1570753 763 ns/op 416 B/op 3 allocs/op +BenchmarkR2router_GPlusStatic 3339474 355 ns/op 144 B/op 4 allocs/op +BenchmarkRivet_GPlusStatic 18570961 64.7 ns/op 0 B/op 0 allocs/op +BenchmarkTango_GPlusStatic 1388702 860 ns/op 200 B/op 8 allocs/op +BenchmarkTigerTonic_GPlusStatic 7803543 159 ns/op 32 B/op 1 allocs/op +BenchmarkTraffic_GPlusStatic 878605 2171 ns/op 1112 B/op 16 allocs/op +BenchmarkVulcan_GPlusStatic 2742446 437 ns/op 98 B/op 3 allocs/op +BenchmarkAce_GPlusParam 11626975 105 ns/op 0 B/op 0 allocs/op +BenchmarkAero_GPlusParam 16914322 71.6 ns/op 0 B/op 0 allocs/op +BenchmarkBear_GPlusParam 1405173 832 ns/op 480 B/op 5 allocs/op +BenchmarkBeego_GPlusParam 1000000 1075 ns/op 352 B/op 3 allocs/op +BenchmarkBone_GPlusParam 1000000 1557 ns/op 816 B/op 6 allocs/op +BenchmarkChi_GPlusParam 1347926 894 ns/op 432 B/op 3 allocs/op +BenchmarkDenco_GPlusParam 5513000 212 ns/op 64 B/op 1 allocs/op +BenchmarkEcho_GPlusParam 11884383 101 ns/op 0 B/op 0 allocs/op +BenchmarkGin_GPlusParam 12898952 93.1 ns/op 0 B/op 0 allocs/op +BenchmarkGocraftWeb_GPlusParam 1000000 1194 ns/op 648 B/op 8 allocs/op +BenchmarkGoji_GPlusParam 1857229 645 ns/op 336 B/op 2 allocs/op +BenchmarkGojiv2_GPlusParam 520939 2322 ns/op 1328 B/op 11 allocs/op +BenchmarkGoJsonRest_GPlusParam 1000000 1536 ns/op 649 B/op 13 allocs/op +BenchmarkGoRestful_GPlusParam 205449 5800 ns/op 4192 B/op 14 allocs/op +BenchmarkGorillaMux_GPlusParam 395310 3188 ns/op 1280 B/op 10 allocs/op +BenchmarkGowwwRouter_GPlusParam 1851798 667 ns/op 432 B/op 3 allocs/op +BenchmarkHttpRouter_GPlusParam 18420789 65.2 ns/op 0 B/op 0 allocs/op +BenchmarkHttpTreeMux_GPlusParam 1878463 629 ns/op 352 B/op 3 allocs/op +BenchmarkKocha_GPlusParam 4495610 273 ns/op 56 B/op 3 allocs/op +BenchmarkLARS_GPlusParam 14615976 83.2 ns/op 0 B/op 0 allocs/op +BenchmarkMacaron_GPlusParam 584145 2549 ns/op 1072 B/op 10 allocs/op +BenchmarkMartini_GPlusParam 250501 4583 ns/op 1072 B/op 10 allocs/op +BenchmarkPat_GPlusParam 1000000 1645 ns/op 576 B/op 11 allocs/op +BenchmarkPossum_GPlusParam 1000000 1008 ns/op 496 B/op 5 allocs/op +BenchmarkR2router_GPlusParam 1708191 688 ns/op 432 B/op 5 allocs/op +BenchmarkRivet_GPlusParam 5795014 211 ns/op 48 B/op 1 allocs/op +BenchmarkTango_GPlusParam 1000000 1091 ns/op 264 B/op 8 allocs/op +BenchmarkTigerTonic_GPlusParam 760221 2489 ns/op 856 B/op 16 allocs/op +BenchmarkTraffic_GPlusParam 309774 4039 ns/op 1872 B/op 21 allocs/op +BenchmarkVulcan_GPlusParam 1935730 623 ns/op 98 B/op 3 allocs/op +BenchmarkAce_GPlus2Params 9158314 134 ns/op 0 B/op 0 allocs/op +BenchmarkAero_GPlus2Params 11300517 107 ns/op 0 B/op 0 allocs/op +BenchmarkBear_GPlus2Params 1239238 961 ns/op 496 B/op 5 allocs/op +BenchmarkBeego_GPlus2Params 1000000 1202 ns/op 352 B/op 3 allocs/op +BenchmarkBone_GPlus2Params 335576 3725 ns/op 1168 B/op 10 allocs/op +BenchmarkChi_GPlus2Params 1000000 1014 ns/op 432 B/op 3 allocs/op +BenchmarkDenco_GPlus2Params 4394598 280 ns/op 64 B/op 1 allocs/op +BenchmarkEcho_GPlus2Params 7851861 154 ns/op 0 B/op 0 allocs/op +BenchmarkGin_GPlus2Params 9958588 120 ns/op 0 B/op 0 allocs/op +BenchmarkGocraftWeb_GPlus2Params 1000000 1433 ns/op 712 B/op 9 allocs/op +BenchmarkGoji_GPlus2Params 1325134 909 ns/op 336 B/op 2 allocs/op +BenchmarkGojiv2_GPlus2Params 405955 2870 ns/op 1408 B/op 14 allocs/op +BenchmarkGoJsonRest_GPlus2Params 977038 1987 ns/op 713 B/op 14 allocs/op +BenchmarkGoRestful_GPlus2Params 205018 6142 ns/op 4384 B/op 16 allocs/op +BenchmarkGorillaMux_GPlus2Params 205641 6015 ns/op 1296 B/op 10 allocs/op +BenchmarkGowwwRouter_GPlus2Params 1748542 684 ns/op 432 B/op 3 allocs/op +BenchmarkHttpRouter_GPlus2Params 14047102 87.7 ns/op 0 B/op 0 allocs/op +BenchmarkHttpTreeMux_GPlus2Params 1418673 828 ns/op 384 B/op 4 allocs/op +BenchmarkKocha_GPlus2Params 2334562 520 ns/op 128 B/op 5 allocs/op +BenchmarkLARS_GPlus2Params 11954094 101 ns/op 0 B/op 0 allocs/op +BenchmarkMacaron_GPlus2Params 491552 2890 ns/op 1072 B/op 10 allocs/op +BenchmarkMartini_GPlus2Params 120532 9545 ns/op 1200 B/op 13 allocs/op +BenchmarkPat_GPlus2Params 194739 6766 ns/op 2168 B/op 33 allocs/op +BenchmarkPossum_GPlus2Params 1201224 1009 ns/op 496 B/op 5 allocs/op +BenchmarkR2router_GPlus2Params 1575535 756 ns/op 432 B/op 5 allocs/op +BenchmarkRivet_GPlus2Params 3698930 325 ns/op 96 B/op 1 allocs/op +BenchmarkTango_GPlus2Params 1000000 1212 ns/op 344 B/op 8 allocs/op +BenchmarkTigerTonic_GPlus2Params 349350 3660 ns/op 1200 B/op 22 allocs/op +BenchmarkTraffic_GPlus2Params 169714 7862 ns/op 2248 B/op 28 allocs/op +BenchmarkVulcan_GPlus2Params 1222288 974 ns/op 98 B/op 3 allocs/op +BenchmarkAce_GPlusAll 845606 1398 ns/op 0 B/op 0 allocs/op +BenchmarkAero_GPlusAll 1000000 1009 ns/op 0 B/op 0 allocs/op +BenchmarkBear_GPlusAll 103830 11386 ns/op 5488 B/op 61 allocs/op +BenchmarkBeego_GPlusAll 82653 14784 ns/op 4576 B/op 39 allocs/op +BenchmarkBone_GPlusAll 36601 33123 ns/op 11744 B/op 109 allocs/op +BenchmarkChi_GPlusAll 95264 12831 ns/op 5616 B/op 39 allocs/op +BenchmarkDenco_GPlusAll 567681 2950 ns/op 672 B/op 11 allocs/op +BenchmarkEcho_GPlusAll 720366 1665 ns/op 0 B/op 0 allocs/op +BenchmarkGin_GPlusAll 1000000 1185 ns/op 0 B/op 0 allocs/op +BenchmarkGocraftWeb_GPlusAll 71575 16365 ns/op 8040 B/op 103 allocs/op +BenchmarkGoji_GPlusAll 136352 9191 ns/op 3696 B/op 22 allocs/op +BenchmarkGojiv2_GPlusAll 38006 31802 ns/op 17616 B/op 154 allocs/op +BenchmarkGoJsonRest_GPlusAll 57238 21561 ns/op 8117 B/op 170 allocs/op +BenchmarkGoRestful_GPlusAll 15147 79276 ns/op 55520 B/op 192 allocs/op +BenchmarkGorillaMux_GPlusAll 24446 48410 ns/op 16112 B/op 128 allocs/op +BenchmarkGowwwRouter_GPlusAll 150112 7770 ns/op 4752 B/op 33 allocs/op +BenchmarkHttpRouter_GPlusAll 1367820 878 ns/op 0 B/op 0 allocs/op +BenchmarkHttpTreeMux_GPlusAll 166628 8004 ns/op 4032 B/op 38 allocs/op +BenchmarkKocha_GPlusAll 265694 4570 ns/op 976 B/op 43 allocs/op +BenchmarkLARS_GPlusAll 1000000 1068 ns/op 0 B/op 0 allocs/op +BenchmarkMacaron_GPlusAll 54564 23305 ns/op 9568 B/op 104 allocs/op +BenchmarkMartini_GPlusAll 16274 73845 ns/op 14016 B/op 145 allocs/op +BenchmarkPat_GPlusAll 27181 44478 ns/op 15264 B/op 271 allocs/op +BenchmarkPossum_GPlusAll 122587 10277 ns/op 5408 B/op 39 allocs/op +BenchmarkR2router_GPlusAll 130137 9297 ns/op 5040 B/op 63 allocs/op +BenchmarkRivet_GPlusAll 532438 3323 ns/op 768 B/op 11 allocs/op +BenchmarkTango_GPlusAll 86054 14531 ns/op 3656 B/op 104 allocs/op +BenchmarkTigerTonic_GPlusAll 33936 35356 ns/op 11600 B/op 242 allocs/op +BenchmarkTraffic_GPlusAll 17833 68181 ns/op 26248 B/op 341 allocs/op +BenchmarkVulcan_GPlusAll 120109 9861 ns/op 1274 B/op 39 allocs/op ``` ## Parse.com -``` -BenchmarkGin_ParseStatic 8683893 140 ns/op 0 B/op 0 allocs/op - -BenchmarkAce_ParseStatic 7255582 160 ns/op 0 B/op 0 allocs/op -BenchmarkAero_ParseStatic 11960128 95.0 ns/op 0 B/op 0 allocs/op -BenchmarkBear_ParseStatic 1791033 659 ns/op 120 B/op 3 allocs/op -BenchmarkBeego_ParseStatic 937918 1688 ns/op 352 B/op 3 allocs/op -BenchmarkBone_ParseStatic 1261682 949 ns/op 144 B/op 3 allocs/op -BenchmarkChi_ParseStatic 1000000 1303 ns/op 432 B/op 3 allocs/op -BenchmarkDenco_ParseStatic 23731242 49.8 ns/op 0 B/op 0 allocs/op -BenchmarkEcho_ParseStatic 10585060 116 ns/op 0 B/op 0 allocs/op -BenchmarkGocraftWeb_ParseStatic 1000000 1156 ns/op 296 B/op 5 allocs/op -BenchmarkGoji_ParseStatic 3927530 300 ns/op 0 B/op 0 allocs/op -BenchmarkGojiv2_ParseStatic 474836 3281 ns/op 1312 B/op 10 allocs/op -BenchmarkGoJsonRest_ParseStatic 1000000 1445 ns/op 329 B/op 11 allocs/op -BenchmarkGoRestful_ParseStatic 101262 11612 ns/op 4256 B/op 13 allocs/op -BenchmarkGorillaMux_ParseStatic 562705 3530 ns/op 976 B/op 9 allocs/op -BenchmarkGowwwRouter_ParseStatic 16479007 69.5 ns/op 0 B/op 0 allocs/op -BenchmarkHttpRouter_ParseStatic 23205590 51.5 ns/op 0 B/op 0 allocs/op -BenchmarkHttpTreeMux_ParseStatic 10763127 106 ns/op 0 B/op 0 allocs/op -BenchmarkKocha_ParseStatic 17850259 60.9 ns/op 0 B/op 0 allocs/op -BenchmarkLARS_ParseStatic 10727432 108 ns/op 0 B/op 0 allocs/op -BenchmarkMacaron_ParseStatic 685586 2665 ns/op 736 B/op 8 allocs/op -BenchmarkMartini_ParseStatic 200642 7158 ns/op 768 B/op 9 allocs/op -BenchmarkPat_ParseStatic 1000000 1139 ns/op 240 B/op 5 allocs/op -BenchmarkPossum_ParseStatic 1000000 1241 ns/op 416 B/op 3 allocs/op -BenchmarkR2router_ParseStatic 2035426 597 ns/op 144 B/op 4 allocs/op -BenchmarkRivet_ParseStatic 9707011 127 ns/op 0 B/op 0 allocs/op -BenchmarkTango_ParseStatic 910617 1693 ns/op 248 B/op 8 allocs/op -BenchmarkTigerTonic_ParseStatic 3168885 385 ns/op 48 B/op 1 allocs/op -BenchmarkTraffic_ParseStatic 493339 4264 ns/op 1256 B/op 19 allocs/op -BenchmarkVulcan_ParseStatic 1394142 848 ns/op 98 B/op 3 allocs/op - -BenchmarkAce_ParseParam 3106903 387 ns/op 64 B/op 1 allocs/op -BenchmarkAero_ParseParam 8045266 141 ns/op 0 B/op 0 allocs/op -BenchmarkBear_ParseParam 1000000 1434 ns/op 467 B/op 5 allocs/op -BenchmarkBeego_ParseParam 951460 1937 ns/op 352 B/op 3 allocs/op -BenchmarkBone_ParseParam 855555 2776 ns/op 896 B/op 7 allocs/op -BenchmarkChi_ParseParam 1000000 1457 ns/op 432 B/op 3 allocs/op -BenchmarkDenco_ParseParam 4084116 301 ns/op 64 B/op 1 allocs/op -BenchmarkEcho_ParseParam 8440170 142 ns/op 0 B/op 0 allocs/op -BenchmarkGin_ParseParam 7716948 157 ns/op 0 B/op 0 allocs/op -BenchmarkGocraftWeb_ParseParam 886284 2045 ns/op 664 B/op 8 allocs/op -BenchmarkGoji_ParseParam 1000000 1167 ns/op 336 B/op 2 allocs/op -BenchmarkGojiv2_ParseParam 269731 3945 ns/op 1360 B/op 12 allocs/op -BenchmarkGoJsonRest_ParseParam 719587 2277 ns/op 649 B/op 13 allocs/op -BenchmarkGoRestful_ParseParam 96408 11925 ns/op 4576 B/op 14 allocs/op -BenchmarkGorillaMux_ParseParam 289303 4154 ns/op 1280 B/op 10 allocs/op -BenchmarkGowwwRouter_ParseParam 1000000 1070 ns/op 432 B/op 3 allocs/op -BenchmarkHttpRouter_ParseParam 4917758 232 ns/op 64 B/op 1 allocs/op -BenchmarkHttpTreeMux_ParseParam 1445443 828 ns/op 352 B/op 3 allocs/op -BenchmarkKocha_ParseParam 3116233 382 ns/op 56 B/op 3 allocs/op -BenchmarkLARS_ParseParam 10584750 113 ns/op 0 B/op 0 allocs/op -BenchmarkMacaron_ParseParam 413617 3872 ns/op 1072 B/op 10 allocs/op -BenchmarkMartini_ParseParam 166545 7605 ns/op 1072 B/op 10 allocs/op -BenchmarkPat_ParseParam 491829 3394 ns/op 992 B/op 15 allocs/op -BenchmarkPossum_ParseParam 1000000 1692 ns/op 496 B/op 5 allocs/op -BenchmarkR2router_ParseParam 1000000 1059 ns/op 432 B/op 5 allocs/op -BenchmarkRivet_ParseParam 3572359 311 ns/op 48 B/op 1 allocs/op -BenchmarkTango_ParseParam 787552 1889 ns/op 280 B/op 8 allocs/op -BenchmarkTigerTonic_ParseParam 487208 3706 ns/op 784 B/op 15 allocs/op -BenchmarkTraffic_ParseParam 186190 5812 ns/op 1896 B/op 21 allocs/op -BenchmarkVulcan_ParseParam 1275432 892 ns/op 98 B/op 3 allocs/op - -BenchmarkAce_Parse2Params 2959621 412 ns/op 64 B/op 1 allocs/op -BenchmarkAero_Parse2Params 6208641 192 ns/op 0 B/op 0 allocs/op -BenchmarkBear_Parse2Params 1000000 1512 ns/op 496 B/op 5 allocs/op -BenchmarkBeego_Parse2Params 761940 1973 ns/op 352 B/op 3 allocs/op -BenchmarkBone_Parse2Params 715987 2582 ns/op 848 B/op 6 allocs/op -BenchmarkChi_Parse2Params 1000000 1495 ns/op 432 B/op 3 allocs/op -BenchmarkDenco_Parse2Params 3585452 341 ns/op 64 B/op 1 allocs/op -BenchmarkEcho_Parse2Params 5193693 204 ns/op 0 B/op 0 allocs/op -BenchmarkGin_Parse2Params 5338316 236 ns/op 0 B/op 0 allocs/op -BenchmarkGocraftWeb_Parse2Params 939637 2299 ns/op 712 B/op 9 allocs/op -BenchmarkGoji_Parse2Params 1000000 1094 ns/op 336 B/op 2 allocs/op -BenchmarkGojiv2_Parse2Params 339514 3733 ns/op 1344 B/op 11 allocs/op -BenchmarkGoJsonRest_Parse2Params 512572 2733 ns/op 713 B/op 14 allocs/op -BenchmarkGoRestful_Parse2Params 95913 12973 ns/op 4928 B/op 14 allocs/op -BenchmarkGorillaMux_Parse2Params 261208 4758 ns/op 1296 B/op 10 allocs/op -BenchmarkGowwwRouter_Parse2Params 1000000 1084 ns/op 432 B/op 3 allocs/op -BenchmarkHttpRouter_Parse2Params 4399953 277 ns/op 64 B/op 1 allocs/op -BenchmarkHttpTreeMux_Parse2Params 1000000 1198 ns/op 384 B/op 4 allocs/op -BenchmarkKocha_Parse2Params 1669431 683 ns/op 128 B/op 5 allocs/op -BenchmarkLARS_Parse2Params 8535754 142 ns/op 0 B/op 0 allocs/op -BenchmarkMacaron_Parse2Params 424590 3959 ns/op 1072 B/op 10 allocs/op -BenchmarkMartini_Parse2Params 162448 8141 ns/op 1152 B/op 11 allocs/op -BenchmarkPat_Parse2Params 431336 3484 ns/op 752 B/op 16 allocs/op -BenchmarkPossum_Parse2Params 1000000 1721 ns/op 496 B/op 5 allocs/op -BenchmarkR2router_Parse2Params 1000000 1136 ns/op 432 B/op 5 allocs/op -BenchmarkRivet_Parse2Params 2630935 442 ns/op 96 B/op 1 allocs/op -BenchmarkTango_Parse2Params 759218 1876 ns/op 312 B/op 8 allocs/op -BenchmarkTigerTonic_Parse2Params 290810 5558 ns/op 1168 B/op 22 allocs/op -BenchmarkTraffic_Parse2Params 181099 6917 ns/op 1944 B/op 22 allocs/op -BenchmarkVulcan_Parse2Params 1000000 1080 ns/op 98 B/op 3 allocs/op - -BenchmarkAce_ParseAll 162906 7888 ns/op 640 B/op 16 allocs/op -BenchmarkAero_ParseAll 219260 4833 ns/op 0 B/op 0 allocs/op -BenchmarkBear_ParseAll 37566 32863 ns/op 8928 B/op 110 allocs/op -BenchmarkBeego_ParseAll 25400 46518 ns/op 9152 B/op 78 allocs/op -BenchmarkBone_ParseAll 19568 61814 ns/op 16208 B/op 147 allocs/op -BenchmarkChi_ParseAll 30562 38281 ns/op 11232 B/op 78 allocs/op -BenchmarkDenco_ParseAll 232554 6371 ns/op 928 B/op 16 allocs/op -BenchmarkEcho_ParseAll 224400 5090 ns/op 0 B/op 0 allocs/op -BenchmarkGin_ParseAll 189829 6134 ns/op 0 B/op 0 allocs/op -BenchmarkGocraftWeb_ParseAll 25446 47000 ns/op 13728 B/op 181 allocs/op -BenchmarkGoji_ParseAll 50503 22949 ns/op 5376 B/op 32 allocs/op -BenchmarkGojiv2_ParseAll 12806 93106 ns/op 34448 B/op 277 allocs/op -BenchmarkGoJsonRest_ParseAll 20764 57021 ns/op 13866 B/op 321 allocs/op -BenchmarkGoRestful_ParseAll 4234 317238 ns/op 117600 B/op 354 allocs/op -BenchmarkGorillaMux_ParseAll 10000 146942 ns/op 30288 B/op 250 allocs/op -BenchmarkGowwwRouter_ParseAll 62548 19363 ns/op 6912 B/op 48 allocs/op -BenchmarkHttpRouter_ParseAll 286662 5091 ns/op 640 B/op 16 allocs/op -BenchmarkHttpTreeMux_ParseAll 66952 18262 ns/op 5728 B/op 51 allocs/op -BenchmarkKocha_ParseAll 109771 9811 ns/op 1112 B/op 54 allocs/op -BenchmarkLARS_ParseAll 272516 3976 ns/op 0 B/op 0 allocs/op -BenchmarkMacaron_ParseAll 17094 71634 ns/op 19136 B/op 208 allocs/op -BenchmarkMartini_ParseAll 6799 208122 ns/op 25072 B/op 253 allocs/op -BenchmarkPat_ParseAll 15993 74594 ns/op 15216 B/op 308 allocs/op -BenchmarkPossum_ParseAll 34897 33398 ns/op 10816 B/op 78 allocs/op -BenchmarkR2router_ParseAll 46909 25410 ns/op 8352 B/op 120 allocs/op -BenchmarkRivet_ParseAll 185193 7725 ns/op 912 B/op 16 allocs/op -BenchmarkTango_ParseAll 24481 47963 ns/op 7168 B/op 208 allocs/op -BenchmarkTigerTonic_ParseAll 15236 79623 ns/op 16048 B/op 332 allocs/op -BenchmarkTraffic_ParseAll 8955 169411 ns/op 45520 B/op 605 allocs/op -BenchmarkVulcan_ParseAll 40406 28971 ns/op 2548 B/op 78 allocs/op +```sh +BenchmarkGin_ParseStatic 18877833 63.5 ns/op 0 B/op 0 allocs/op + +BenchmarkAce_ParseStatic 19663731 60.8 ns/op 0 B/op 0 allocs/op +BenchmarkAero_ParseStatic 28967341 41.5 ns/op 0 B/op 0 allocs/op +BenchmarkBear_ParseStatic 3006984 402 ns/op 120 B/op 3 allocs/op +BenchmarkBeego_ParseStatic 1000000 1031 ns/op 352 B/op 3 allocs/op +BenchmarkBone_ParseStatic 1782482 675 ns/op 144 B/op 3 allocs/op +BenchmarkChi_ParseStatic 1453261 819 ns/op 432 B/op 3 allocs/op +BenchmarkDenco_ParseStatic 45023595 26.5 ns/op 0 B/op 0 allocs/op +BenchmarkEcho_ParseStatic 17330470 69.3 ns/op 0 B/op 0 allocs/op +BenchmarkGocraftWeb_ParseStatic 1644006 731 ns/op 296 B/op 5 allocs/op +BenchmarkGoji_ParseStatic 7026930 170 ns/op 0 B/op 0 allocs/op +BenchmarkGojiv2_ParseStatic 517618 2037 ns/op 1312 B/op 10 allocs/op +BenchmarkGoJsonRest_ParseStatic 1227080 975 ns/op 329 B/op 11 allocs/op +BenchmarkGoRestful_ParseStatic 192458 6659 ns/op 4256 B/op 13 allocs/op +BenchmarkGorillaMux_ParseStatic 744062 2109 ns/op 976 B/op 9 allocs/op +BenchmarkGowwwRouter_ParseStatic 37781062 31.8 ns/op 0 B/op 0 allocs/op +BenchmarkHttpRouter_ParseStatic 45311223 26.5 ns/op 0 B/op 0 allocs/op +BenchmarkHttpTreeMux_ParseStatic 21383475 56.1 ns/op 0 B/op 0 allocs/op +BenchmarkKocha_ParseStatic 29953290 40.1 ns/op 0 B/op 0 allocs/op +BenchmarkLARS_ParseStatic 20036196 62.7 ns/op 0 B/op 0 allocs/op +BenchmarkMacaron_ParseStatic 1000000 1740 ns/op 736 B/op 8 allocs/op +BenchmarkMartini_ParseStatic 404156 3801 ns/op 768 B/op 9 allocs/op +BenchmarkPat_ParseStatic 1547180 772 ns/op 240 B/op 5 allocs/op +BenchmarkPossum_ParseStatic 1608991 757 ns/op 416 B/op 3 allocs/op +BenchmarkR2router_ParseStatic 3177936 385 ns/op 144 B/op 4 allocs/op +BenchmarkRivet_ParseStatic 17783205 67.4 ns/op 0 B/op 0 allocs/op +BenchmarkTango_ParseStatic 1210777 990 ns/op 248 B/op 8 allocs/op +BenchmarkTigerTonic_ParseStatic 5316440 231 ns/op 48 B/op 1 allocs/op +BenchmarkTraffic_ParseStatic 496050 2539 ns/op 1256 B/op 19 allocs/op +BenchmarkVulcan_ParseStatic 2462798 488 ns/op 98 B/op 3 allocs/op +BenchmarkAce_ParseParam 13393669 89.6 ns/op 0 B/op 0 allocs/op +BenchmarkAero_ParseParam 19836619 60.4 ns/op 0 B/op 0 allocs/op +BenchmarkBear_ParseParam 1405954 864 ns/op 467 B/op 5 allocs/op +BenchmarkBeego_ParseParam 1000000 1065 ns/op 352 B/op 3 allocs/op +BenchmarkBone_ParseParam 1000000 1698 ns/op 896 B/op 7 allocs/op +BenchmarkChi_ParseParam 1356037 873 ns/op 432 B/op 3 allocs/op +BenchmarkDenco_ParseParam 6241392 204 ns/op 64 B/op 1 allocs/op +BenchmarkEcho_ParseParam 14088100 85.1 ns/op 0 B/op 0 allocs/op +BenchmarkGin_ParseParam 17426064 68.9 ns/op 0 B/op 0 allocs/op +BenchmarkGocraftWeb_ParseParam 1000000 1254 ns/op 664 B/op 8 allocs/op +BenchmarkGoji_ParseParam 1682574 713 ns/op 336 B/op 2 allocs/op +BenchmarkGojiv2_ParseParam 502224 2333 ns/op 1360 B/op 12 allocs/op +BenchmarkGoJsonRest_ParseParam 1000000 1401 ns/op 649 B/op 13 allocs/op +BenchmarkGoRestful_ParseParam 182623 7097 ns/op 4576 B/op 14 allocs/op +BenchmarkGorillaMux_ParseParam 482332 2477 ns/op 1280 B/op 10 allocs/op +BenchmarkGowwwRouter_ParseParam 1834873 657 ns/op 432 B/op 3 allocs/op +BenchmarkHttpRouter_ParseParam 23593393 51.0 ns/op 0 B/op 0 allocs/op +BenchmarkHttpTreeMux_ParseParam 2100160 574 ns/op 352 B/op 3 allocs/op +BenchmarkKocha_ParseParam 4837220 252 ns/op 56 B/op 3 allocs/op +BenchmarkLARS_ParseParam 18411192 66.2 ns/op 0 B/op 0 allocs/op +BenchmarkMacaron_ParseParam 571870 2398 ns/op 1072 B/op 10 allocs/op +BenchmarkMartini_ParseParam 286262 4268 ns/op 1072 B/op 10 allocs/op +BenchmarkPat_ParseParam 692906 2157 ns/op 992 B/op 15 allocs/op +BenchmarkPossum_ParseParam 1000000 1011 ns/op 496 B/op 5 allocs/op +BenchmarkR2router_ParseParam 1722735 697 ns/op 432 B/op 5 allocs/op +BenchmarkRivet_ParseParam 6058054 203 ns/op 48 B/op 1 allocs/op +BenchmarkTango_ParseParam 1000000 1061 ns/op 280 B/op 8 allocs/op +BenchmarkTigerTonic_ParseParam 890275 2277 ns/op 784 B/op 15 allocs/op +BenchmarkTraffic_ParseParam 351322 3543 ns/op 1896 B/op 21 allocs/op +BenchmarkVulcan_ParseParam 2076544 572 ns/op 98 B/op 3 allocs/op +BenchmarkAce_Parse2Params 11718074 101 ns/op 0 B/op 0 allocs/op +BenchmarkAero_Parse2Params 16264988 73.4 ns/op 0 B/op 0 allocs/op +BenchmarkBear_Parse2Params 1238322 973 ns/op 496 B/op 5 allocs/op +BenchmarkBeego_Parse2Params 1000000 1120 ns/op 352 B/op 3 allocs/op +BenchmarkBone_Parse2Params 1000000 1632 ns/op 848 B/op 6 allocs/op +BenchmarkChi_Parse2Params 1239477 955 ns/op 432 B/op 3 allocs/op +BenchmarkDenco_Parse2Params 4944133 245 ns/op 64 B/op 1 allocs/op +BenchmarkEcho_Parse2Params 10518286 114 ns/op 0 B/op 0 allocs/op +BenchmarkGin_Parse2Params 14505195 82.7 ns/op 0 B/op 0 allocs/op +BenchmarkGocraftWeb_Parse2Params 1000000 1437 ns/op 712 B/op 9 allocs/op +BenchmarkGoji_Parse2Params 1689883 707 ns/op 336 B/op 2 allocs/op +BenchmarkGojiv2_Parse2Params 502334 2308 ns/op 1344 B/op 11 allocs/op +BenchmarkGoJsonRest_Parse2Params 1000000 1771 ns/op 713 B/op 14 allocs/op +BenchmarkGoRestful_Parse2Params 159092 7583 ns/op 4928 B/op 14 allocs/op +BenchmarkGorillaMux_Parse2Params 417548 2980 ns/op 1296 B/op 10 allocs/op +BenchmarkGowwwRouter_Parse2Params 1751737 686 ns/op 432 B/op 3 allocs/op +BenchmarkHttpRouter_Parse2Params 18089204 66.3 ns/op 0 B/op 0 allocs/op +BenchmarkHttpTreeMux_Parse2Params 1556986 777 ns/op 384 B/op 4 allocs/op +BenchmarkKocha_Parse2Params 2493082 485 ns/op 128 B/op 5 allocs/op +BenchmarkLARS_Parse2Params 15350108 78.5 ns/op 0 B/op 0 allocs/op +BenchmarkMacaron_Parse2Params 530974 2605 ns/op 1072 B/op 10 allocs/op +BenchmarkMartini_Parse2Params 247069 4673 ns/op 1152 B/op 11 allocs/op +BenchmarkPat_Parse2Params 816295 2126 ns/op 752 B/op 16 allocs/op +BenchmarkPossum_Parse2Params 1000000 1002 ns/op 496 B/op 5 allocs/op +BenchmarkR2router_Parse2Params 1569771 733 ns/op 432 B/op 5 allocs/op +BenchmarkRivet_Parse2Params 4080546 295 ns/op 96 B/op 1 allocs/op +BenchmarkTango_Parse2Params 1000000 1121 ns/op 312 B/op 8 allocs/op +BenchmarkTigerTonic_Parse2Params 399556 3470 ns/op 1168 B/op 22 allocs/op +BenchmarkTraffic_Parse2Params 314194 4159 ns/op 1944 B/op 22 allocs/op +BenchmarkVulcan_Parse2Params 1827559 664 ns/op 98 B/op 3 allocs/op +BenchmarkAce_ParseAll 478395 2503 ns/op 0 B/op 0 allocs/op +BenchmarkAero_ParseAll 715392 1658 ns/op 0 B/op 0 allocs/op +BenchmarkBear_ParseAll 59191 20124 ns/op 8928 B/op 110 allocs/op +BenchmarkBeego_ParseAll 45507 27266 ns/op 9152 B/op 78 allocs/op +BenchmarkBone_ParseAll 29328 41459 ns/op 16208 B/op 147 allocs/op +BenchmarkChi_ParseAll 48531 25053 ns/op 11232 B/op 78 allocs/op +BenchmarkDenco_ParseAll 325532 4284 ns/op 928 B/op 16 allocs/op +BenchmarkEcho_ParseAll 433771 2759 ns/op 0 B/op 0 allocs/op +BenchmarkGin_ParseAll 576316 2082 ns/op 0 B/op 0 allocs/op +BenchmarkGocraftWeb_ParseAll 41500 29692 ns/op 13728 B/op 181 allocs/op +BenchmarkGoji_ParseAll 80833 15563 ns/op 5376 B/op 32 allocs/op +BenchmarkGojiv2_ParseAll 19836 60335 ns/op 34448 B/op 277 allocs/op +BenchmarkGoJsonRest_ParseAll 32210 38027 ns/op 13866 B/op 321 allocs/op +BenchmarkGoRestful_ParseAll 6644 190842 ns/op 117600 B/op 354 allocs/op +BenchmarkGorillaMux_ParseAll 12634 95894 ns/op 30288 B/op 250 allocs/op +BenchmarkGowwwRouter_ParseAll 98152 12159 ns/op 6912 B/op 48 allocs/op +BenchmarkHttpRouter_ParseAll 933208 1273 ns/op 0 B/op 0 allocs/op +BenchmarkHttpTreeMux_ParseAll 107191 11554 ns/op 5728 B/op 51 allocs/op +BenchmarkKocha_ParseAll 184862 6225 ns/op 1112 B/op 54 allocs/op +BenchmarkLARS_ParseAll 644546 1858 ns/op 0 B/op 0 allocs/op +BenchmarkMacaron_ParseAll 26145 46484 ns/op 19136 B/op 208 allocs/op +BenchmarkMartini_ParseAll 10000 121838 ns/op 25072 B/op 253 allocs/op +BenchmarkPat_ParseAll 25417 47196 ns/op 15216 B/op 308 allocs/op +BenchmarkPossum_ParseAll 58550 20735 ns/op 10816 B/op 78 allocs/op +BenchmarkR2router_ParseAll 72732 16584 ns/op 8352 B/op 120 allocs/op +BenchmarkRivet_ParseAll 281365 4968 ns/op 912 B/op 16 allocs/op +BenchmarkTango_ParseAll 42831 28668 ns/op 7168 B/op 208 allocs/op +BenchmarkTigerTonic_ParseAll 23774 49972 ns/op 16048 B/op 332 allocs/op +BenchmarkTraffic_ParseAll 10000 104679 ns/op 45520 B/op 605 allocs/op +BenchmarkVulcan_ParseAll 64810 18108 ns/op 2548 B/op 78 allocs/op ``` diff --git a/README.md b/README.md index dae63e24..d75843a7 100644 --- a/README.md +++ b/README.md @@ -54,6 +54,7 @@ Gin is a web framework written in Go (Golang). It features a martini-like API wi - [AsciiJSON](#asciijson) - [PureJSON](#purejson) - [Serving static files](#serving-static-files) + - [Serving data from file](#serving-data-from-file) - [Serving data from reader](#serving-data-from-reader) - [HTML rendering](#html-rendering) - [Custom Template renderer](#custom-template-renderer) @@ -68,6 +69,8 @@ Gin is a web framework written in Go (Golang). It features a martini-like API wi - [Support Let's Encrypt](#support-lets-encrypt) - [Run multiple service using Gin](#run-multiple-service-using-gin) - [Graceful shutdown or restart](#graceful-shutdown-or-restart) + - [Third-party packages](#third-party-packages) + - [Manually](#manually) - [Build a single binary with templates](#build-a-single-binary-with-templates) - [Bind form-data request with custom struct](#bind-form-data-request-with-custom-struct) - [Try to bind body into different structs](#try-to-bind-body-into-different-structs) @@ -133,35 +136,38 @@ Gin uses a custom version of [HttpRouter](https://github.com/julienschmidt/httpr [See all benchmarks](/BENCHMARKS.md) -Benchmark name | (1) | (2) | (3) | (4) ---------------------------------------------|-----------:|------------:|-----------:|---------: -**BenchmarkGin_GithubAll** | **30000** | **48375** | **0** | **0** -BenchmarkAce_GithubAll | 10000 | 134059 | 13792 | 167 -BenchmarkBear_GithubAll | 5000 | 534445 | 86448 | 943 -BenchmarkBeego_GithubAll | 3000 | 592444 | 74705 | 812 -BenchmarkBone_GithubAll | 200 | 6957308 | 698784 | 8453 -BenchmarkDenco_GithubAll | 10000 | 158819 | 20224 | 167 -BenchmarkEcho_GithubAll | 10000 | 154700 | 6496 | 203 -BenchmarkGocraftWeb_GithubAll | 3000 | 570806 | 131656 | 1686 -BenchmarkGoji_GithubAll | 2000 | 818034 | 56112 | 334 -BenchmarkGojiv2_GithubAll | 2000 | 1213973 | 274768 | 3712 -BenchmarkGoJsonRest_GithubAll | 2000 | 785796 | 134371 | 2737 -BenchmarkGoRestful_GithubAll | 300 | 5238188 | 689672 | 4519 -BenchmarkGorillaMux_GithubAll | 100 | 10257726 | 211840 | 2272 -BenchmarkHttpRouter_GithubAll | 20000 | 105414 | 13792 | 167 -BenchmarkHttpTreeMux_GithubAll | 10000 | 319934 | 65856 | 671 -BenchmarkKocha_GithubAll | 10000 | 209442 | 23304 | 843 -BenchmarkLARS_GithubAll | 20000 | 62565 | 0 | 0 -BenchmarkMacaron_GithubAll | 2000 | 1161270 | 204194 | 2000 -BenchmarkMartini_GithubAll | 200 | 9991713 | 226549 | 2325 -BenchmarkPat_GithubAll | 200 | 5590793 | 1499568 | 27435 -BenchmarkPossum_GithubAll | 10000 | 319768 | 84448 | 609 -BenchmarkR2router_GithubAll | 10000 | 305134 | 77328 | 979 -BenchmarkRivet_GithubAll | 10000 | 132134 | 16272 | 167 -BenchmarkTango_GithubAll | 3000 | 552754 | 63826 | 1618 -BenchmarkTigerTonic_GithubAll | 1000 | 1439483 | 239104 | 5374 -BenchmarkTraffic_GithubAll | 100 | 11383067 | 2659329 | 21848 -BenchmarkVulcan_GithubAll | 5000 | 394253 | 19894 | 609 +| Benchmark name | (1) | (2) | (3) | (4) | +| ------------------------------ | ---------:| ---------------:| ------------:| ---------------:| +| BenchmarkGin_GithubAll | **43550** | **27364 ns/op** | **0 B/op** | **0 allocs/op** | +| BenchmarkAce_GithubAll | 40543 | 29670 ns/op | 0 B/op | 0 allocs/op | +| BenchmarkAero_GithubAll | 57632 | 20648 ns/op | 0 B/op | 0 allocs/op | +| BenchmarkBear_GithubAll | 9234 | 216179 ns/op | 86448 B/op | 943 allocs/op | +| BenchmarkBeego_GithubAll | 7407 | 243496 ns/op | 71456 B/op | 609 allocs/op | +| BenchmarkBone_GithubAll | 420 | 2922835 ns/op | 720160 B/op | 8620 allocs/op | +| BenchmarkChi_GithubAll | 7620 | 238331 ns/op | 87696 B/op | 609 allocs/op | +| BenchmarkDenco_GithubAll | 18355 | 64494 ns/op | 20224 B/op | 167 allocs/op | +| BenchmarkEcho_GithubAll | 31251 | 38479 ns/op | 0 B/op | 0 allocs/op | +| BenchmarkGocraftWeb_GithubAll | 4117 | 300062 ns/op | 131656 B/op | 1686 allocs/op | +| BenchmarkGoji_GithubAll | 3274 | 416158 ns/op | 56112 B/op | 334 allocs/op | +| BenchmarkGojiv2_GithubAll | 1402 | 870518 ns/op | 352720 B/op | 4321 allocs/op | +| BenchmarkGoJsonRest_GithubAll | 2976 | 401507 ns/op | 134371 B/op | 2737 allocs/op | +| BenchmarkGoRestful_GithubAll | 410 | 2913158 ns/op | 910144 B/op | 2938 allocs/op | +| BenchmarkGorillaMux_GithubAll | 346 | 3384987 ns/op | 251650 B/op | 1994 allocs/op | +| BenchmarkGowwwRouter_GithubAll | 10000 | 143025 ns/op | 72144 B/op | 501 allocs/op | +| BenchmarkHttpRouter_GithubAll | 55938 | 21360 ns/op | 0 B/op | 0 allocs/op | +| BenchmarkHttpTreeMux_GithubAll | 10000 | 153944 ns/op | 65856 B/op | 671 allocs/op | +| BenchmarkKocha_GithubAll | 10000 | 106315 ns/op | 23304 B/op | 843 allocs/op | +| BenchmarkLARS_GithubAll | 47779 | 25084 ns/op | 0 B/op | 0 allocs/op | +| BenchmarkMacaron_GithubAll | 3266 | 371907 ns/op | 149409 B/op | 1624 allocs/op | +| BenchmarkMartini_GithubAll | 331 | 3444706 ns/op | 226551 B/op | 2325 allocs/op | +| BenchmarkPat_GithubAll | 273 | 4381818 ns/op | 1483152 B/op | 26963 allocs/op | +| BenchmarkPossum_GithubAll | 10000 | 164367 ns/op | 84448 B/op | 609 allocs/op | +| BenchmarkR2router_GithubAll | 10000 | 160220 ns/op | 77328 B/op | 979 allocs/op | +| BenchmarkRivet_GithubAll | 14625 | 82453 ns/op | 16272 B/op | 167 allocs/op | +| BenchmarkTango_GithubAll | 6255 | 279611 ns/op | 63826 B/op | 1618 allocs/op | +| BenchmarkTigerTonic_GithubAll | 2008 | 687874 ns/op | 193856 B/op | 4474 allocs/op | +| BenchmarkTraffic_GithubAll | 355 | 3478508 ns/op | 820744 B/op | 14114 allocs/op | +| BenchmarkVulcan_GithubAll | 6885 | 193333 ns/op | 19894 B/op | 609 allocs/op | - (1): Total Repetitions achieved in constant time, higher means more confident result - (2): Single Repetition Duration (ns/op), lower is better