From 8a116979578195dd7c8867c71cf3dd3e12430d9c Mon Sep 17 00:00:00 2001 From: Bryan Boreham Date: Wed, 18 Oct 2017 18:23:38 +0000 Subject: [PATCH] Add BenchmarkTopologyHosts() and BenchmarkTopologyContainers() To time a single topology, for more focused optimisation --- app/benchmark_internal_test.go | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/app/benchmark_internal_test.go b/app/benchmark_internal_test.go index 493244e29..9eae97bfb 100644 --- a/app/benchmark_internal_test.go +++ b/app/benchmark_internal_test.go @@ -32,19 +32,43 @@ func loadReport() (report.Report, error) { } func BenchmarkTopologyList(b *testing.B) { + benchmarkRender(b, func(report report.Report) { + request := &http.Request{ + Form: url.Values{}, + } + topologyRegistry.renderTopologies(report, request) + }) +} + +func benchmarkRender(b *testing.B, f func(report.Report)) { report, err := loadReport() if err != nil { b.Fatal(err) } b.ReportAllocs() b.ResetTimer() - request := &http.Request{ - Form: url.Values{}, - } for i := 0; i < b.N; i++ { b.StopTimer() render.ResetCache() b.StartTimer() - topologyRegistry.renderTopologies(report, request) + f(report) } } + +func BenchmarkTopologyHosts(b *testing.B) { + benchmarkOneTopology(b, "hosts") +} + +func BenchmarkTopologyContainers(b *testing.B) { + benchmarkOneTopology(b, "containers") +} + +func benchmarkOneTopology(b *testing.B, topologyID string) { + benchmarkRender(b, func(report report.Report) { + renderer, decorator, err := topologyRegistry.RendererForTopology(topologyID, url.Values{}, report) + if err != nil { + b.Fatal(err) + } + renderer.Render(report, decorator) + }) +}