From 4950ce485f7d931890fcfd2ee287b6df1b5db435 Mon Sep 17 00:00:00 2001 From: Dominik Braun Date: Thu, 8 Aug 2019 07:59:02 +0200 Subject: Part 1: Optimize using compiler's inliner (#2687) * optimized functions for inlining * added note regarding ResponseWriterWrapper * optimzed browseWrite* methods for FileServer * created benchmarks for comparison * creating browseListing instance in each function * created benchmarks for openResponseWriter * removed benchmarks of old implementations * implemented sync.Pool for byte buffers * using global sync.Pool for writing JSON/HTML --- modules/caddyhttp/fileserver/browse_test.go | 54 +++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 modules/caddyhttp/fileserver/browse_test.go (limited to 'modules/caddyhttp/fileserver/browse_test.go') diff --git a/modules/caddyhttp/fileserver/browse_test.go b/modules/caddyhttp/fileserver/browse_test.go new file mode 100644 index 0000000..b1f7092 --- /dev/null +++ b/modules/caddyhttp/fileserver/browse_test.go @@ -0,0 +1,54 @@ +package fileserver + +import ( + "html/template" + "testing" + + "github.com/caddyserver/caddy/v2" +) + +func BenchmarkBrowseWriteJSON(b *testing.B) { + fsrv := new(FileServer) + fsrv.Provision(caddy.Context{}) + listing := browseListing{ + Name: "test", + Path: "test", + CanGoUp: false, + Items: make([]fileInfo, 100), + NumDirs: 42, + NumFiles: 420, + Sort: "", + Order: "", + ItemsLimitedTo: 42, + } + b.ResetTimer() + + for n := 0; n < b.N; n++ { + fsrv.browseWriteJSON(listing) + } +} + +func BenchmarkBrowseWriteHTML(b *testing.B) { + fsrv := new(FileServer) + fsrv.Provision(caddy.Context{}) + fsrv.Browse = &Browse{ + TemplateFile: "", + template: template.New("test"), + } + listing := browseListing{ + Name: "test", + Path: "test", + CanGoUp: false, + Items: make([]fileInfo, 100), + NumDirs: 42, + NumFiles: 420, + Sort: "", + Order: "", + ItemsLimitedTo: 42, + } + b.ResetTimer() + + for n := 0; n < b.N; n++ { + fsrv.browseWriteHTML(listing) + } +} -- cgit v1.2.3