Browse Source
* 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/HTMLmaster
Dominik Braun
6 years ago
committed by
Matt Holt
6 changed files with 104 additions and 10 deletions
@ -0,0 +1,12 @@ |
|||
package encode |
|||
|
|||
import ( |
|||
"testing" |
|||
) |
|||
|
|||
func BenchmarkOpenResponseWriter(b *testing.B) { |
|||
enc := new(Encode) |
|||
for n := 0; n < b.N; n++ { |
|||
enc.openResponseWriter("test", nil) |
|||
} |
|||
} |
@ -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) |
|||
} |
|||
} |
Loading…
Reference in new issue