From 8c97daddee2645baab33f5e2d5ca65df09aacd45 Mon Sep 17 00:00:00 2001 From: glightfoot Date: Thu, 2 Jul 2020 15:25:25 -0400 Subject: [PATCH] improve benchmark validity by not measuring startup costs Signed-off-by: glightfoot --- exporter_benchmark_test.go | 21 +++++++++++++++++++++ line_benchmark_test.go | 3 +++ 2 files changed, 24 insertions(+) diff --git a/exporter_benchmark_test.go b/exporter_benchmark_test.go index 30a3cea..6d58569 100644 --- a/exporter_benchmark_test.go +++ b/exporter_benchmark_test.go @@ -46,7 +46,14 @@ func benchmarkUDPListener(times int, b *testing.B) { bytesInput[run*len(input)+i] = fmt.Sprintf("run%d%s", run, input[i]) } } + + // reset benchmark timer to not measure startup costs + b.ResetTimer() + for n := 0; n < b.N; n++ { + // pause benchmark timer for creating the chan and listener + b.StopTimer() + // there are more events than input lines, need bigger buffer events := make(chan event.Events, len(bytesInput)*times*2) @@ -59,6 +66,9 @@ func benchmarkUDPListener(times int, b *testing.B) { TagsReceived: tagsReceived, } + // resume benchmark timer + b.StartTimer() + for i := 0; i < times; i++ { for _, line := range bytesInput { l.HandlePacket([]byte(line)) @@ -154,8 +164,19 @@ mappings: } ex := exporter.NewExporter(testMapper, log.NewNopLogger(), eventsActions, eventsUnmapped, errorEventStats, eventStats, conflictingEventStats, metricsCount) + + // reset benchmark timer to not measure startup costs + b.ResetTimer() + for i := 0; i < b.N; i++ { + // pause benchmark timer for creating the chan + b.StopTimer() + ec := make(chan event.Events, 1000) + + // resume benchmark timer + b.StartTimer() + go func() { for i := 0; i < 1000; i++ { ec <- events diff --git a/line_benchmark_test.go b/line_benchmark_test.go index 1c4dbae..2711756 100644 --- a/line_benchmark_test.go +++ b/line_benchmark_test.go @@ -37,6 +37,9 @@ func benchmarkLineToEvents(times int, b *testing.B) { } logger := log.NewNopLogger() + // reset benchmark timer to not measure startup costs + b.ResetTimer() + for n := 0; n < b.N; n++ { for i := 0; i < times; i++ { for _, l := range input {