瀏覽代碼

Cosmetic changes

Manu Mtz-Almeida 10 年之前
父節點
當前提交
dded099609
共有 2 個文件被更改,包括 65 次插入40 次删除
  1. 4 0
      CHANGELOG.md
  2. 61 40
      benchmarks_test.go

+ 4 - 0
CHANGELOG.md

@@ -6,10 +6,14 @@
 - [PERFORMANCE] Much faster 404 routing
 - [PERFORMANCE] Allocation optimizations
 - [PERFORMANCE] Faster root tree lookup
+- [PERFORMANCE] Zero overhead, String() and JSON() rendering.
+- [PERFORMANCE] Faster ClientIP parsing
 - [PERFORMANCE] Much faster SSE implementation
 - [NEW] Benchmarks suite
 - [NEW] Bind validation can be disabled and replaced with custom validators.
+- [NEW] More flexible HTML render
 - [FIX] Binding multipart form
+- [FIX] Integration tests
 - [FIX] Crash when binding non struct object in Context.
 - [FIX] RunTLS() implementation
 - [FIX] Logger() unit tests

+ 61 - 40
benchmarks_test.go

@@ -6,55 +6,30 @@ import (
 	"testing"
 )
 
-func newMockWriter() *mockWriter {
-	return &mockWriter{
-		http.Header{},
-	}
-}
-
-type mockWriter struct {
-	headers http.Header
-}
-
-func (m *mockWriter) Header() (h http.Header) {
-	return m.headers
-}
-
-func (m *mockWriter) Write(p []byte) (n int, err error) {
-	return len(p), nil
-}
-
-func (m *mockWriter) WriteString(s string) (n int, err error) {
-	return len(s), nil
+func BenchmarkOneRoute(B *testing.B) {
+	router := New()
+	router.GET("/ping", func(c *Context) {})
+	runRequest(B, router, "GET", "/ping")
 }
 
-func (m *mockWriter) WriteHeader(int) {}
-
-func runRequest(B *testing.B, r *Engine, method, path string) {
-	// create fake request
-	req, err := http.NewRequest(method, path, nil)
-	if err != nil {
-		panic(err)
-	}
-	w := newMockWriter()
-	B.ReportAllocs()
-	B.ResetTimer()
-	for i := 0; i < B.N; i++ {
-		r.ServeHTTP(w, req)
-	}
+func BenchmarkRecoveryMiddleware(B *testing.B) {
+	router := New()
+	router.Use(Recovery())
+	router.GET("/", func(c *Context) {})
+	runRequest(B, router, "GET", "/")
 }
 
-func BenchmarkOneRoute(B *testing.B) {
+func BenchmarkLoggerMiddleware(B *testing.B) {
 	router := New()
-	router.GET("/ping", func(c *Context) {})
-	runRequest(B, router, "GET", "/ping")
+	router.Use(LoggerWithWriter(newMockWriter()))
+	router.GET("/", func(c *Context) {})
+	runRequest(B, router, "GET", "/")
 }
 
 func BenchmarkManyHandlers(B *testing.B) {
-	DefaultWriter = newMockWriter()
-	//router := Default()
 	router := New()
-	router.Use(Recovery(), Logger())
+	router.Use(Recovery(), LoggerWithWriter(newMockWriter()))
+	router.Use(func(c *Context) {})
 	router.Use(func(c *Context) {})
 	router.GET("/ping", func(c *Context) {})
 	runRequest(B, router, "GET", "/ping")
@@ -93,6 +68,14 @@ func BenchmarkOneRouteHTML(B *testing.B) {
 	runRequest(B, router, "GET", "/html")
 }
 
+func BenchmarkOneRouteSet(B *testing.B) {
+	router := New()
+	router.GET("/ping", func(c *Context) {
+		c.Set("key", "value")
+	})
+	runRequest(B, router, "GET", "/ping")
+}
+
 func BenchmarkOneRouteString(B *testing.B) {
 	router := New()
 	router.GET("/text", func(c *Context) {
@@ -134,3 +117,41 @@ func Benchmark404Many(B *testing.B) {
 	router.NoRoute(func(c *Context) {})
 	runRequest(B, router, "GET", "/viewfake")
 }
+
+type mockWriter struct {
+	headers http.Header
+}
+
+func newMockWriter() *mockWriter {
+	return &mockWriter{
+		http.Header{},
+	}
+}
+
+func (m *mockWriter) Header() (h http.Header) {
+	return m.headers
+}
+
+func (m *mockWriter) Write(p []byte) (n int, err error) {
+	return len(p), nil
+}
+
+func (m *mockWriter) WriteString(s string) (n int, err error) {
+	return len(s), nil
+}
+
+func (m *mockWriter) WriteHeader(int) {}
+
+func runRequest(B *testing.B, r *Engine, method, path string) {
+	// create fake request
+	req, err := http.NewRequest(method, path, nil)
+	if err != nil {
+		panic(err)
+	}
+	w := newMockWriter()
+	B.ReportAllocs()
+	B.ResetTimer()
+	for i := 0; i < B.N; i++ {
+		r.ServeHTTP(w, req)
+	}
+}