| // Copyright 2012 The Gorilla Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| package mux |
| |
| import ( |
| "net/http" |
| "net/http/httptest" |
| "testing" |
| ) |
| |
| func BenchmarkMux(b *testing.B) { |
| router := new(Router) |
| handler := func(w http.ResponseWriter, r *http.Request) {} |
| router.HandleFunc("/v1/{v1}", handler) |
| |
| request, _ := http.NewRequest("GET", "/v1/anything", nil) |
| for i := 0; i < b.N; i++ { |
| router.ServeHTTP(nil, request) |
| } |
| } |
| |
| func BenchmarkMuxAlternativeInRegexp(b *testing.B) { |
| router := new(Router) |
| handler := func(w http.ResponseWriter, r *http.Request) {} |
| router.HandleFunc("/v1/{v1:(?:a|b)}", handler) |
| |
| requestA, _ := http.NewRequest("GET", "/v1/a", nil) |
| requestB, _ := http.NewRequest("GET", "/v1/b", nil) |
| for i := 0; i < b.N; i++ { |
| router.ServeHTTP(nil, requestA) |
| router.ServeHTTP(nil, requestB) |
| } |
| } |
| |
| func BenchmarkManyPathVariables(b *testing.B) { |
| router := new(Router) |
| handler := func(w http.ResponseWriter, r *http.Request) {} |
| router.HandleFunc("/v1/{v1}/{v2}/{v3}/{v4}/{v5}", handler) |
| |
| matchingRequest, _ := http.NewRequest("GET", "/v1/1/2/3/4/5", nil) |
| notMatchingRequest, _ := http.NewRequest("GET", "/v1/1/2/3/4", nil) |
| recorder := httptest.NewRecorder() |
| for i := 0; i < b.N; i++ { |
| router.ServeHTTP(nil, matchingRequest) |
| router.ServeHTTP(recorder, notMatchingRequest) |
| } |
| } |