Add BenchmarkTopologyHosts() and BenchmarkTopologyContainers()

To time a single topology, for more focused optimisation
This commit is contained in:
Bryan Boreham
2017-10-18 18:23:38 +00:00
parent 119bbab4fe
commit 8a11697957

View File

@@ -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)
})
}