From 4edcf529657635fae9ba622215bb6f27ebcab630 Mon Sep 17 00:00:00 2001 From: Ian Cottrell Date: Mon, 30 Mar 2020 07:55:16 -0400 Subject: [PATCH] internal/telemetry: add a noop exporter benchmark This has the exporter registered but doing nothing, to measure the basic cost of having any exporter without any specific exporter costs. Specifically at the moment this measures the cost of filling in the time on the event and building the TagMap that is passed down. Change-Id: Iaae5659e3de9b871dc281c509fa2ee9c3e1d049a Reviewed-on: https://go-review.googlesource.com/c/tools/+/226357 Run-TryBot: Ian Cottrell TryBot-Result: Gobot Gobot Reviewed-by: Robert Findley --- internal/telemetry/bench_test.go | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/internal/telemetry/bench_test.go b/internal/telemetry/bench_test.go index ee1921b796..df0f1ea64e 100644 --- a/internal/telemetry/bench_test.go +++ b/internal/telemetry/bench_test.go @@ -2,6 +2,7 @@ package telemetry_test import ( "context" + "io/ioutil" "log" "testing" @@ -107,6 +108,11 @@ func Benchmark(b *testing.B) { } event.SetExporter(noopExporter) + for _, t := range benchmarks { + b.Run(t.name+"Noop", t.test) + } + + event.SetExporter(export.Spans(export.LogWriter(ioutil.Discard, false))) for _, t := range benchmarks { b.Run(t.name, t.test) } @@ -137,13 +143,9 @@ func (hooks Hooks) runBenchmark(b *testing.B) { } func init() { - log.SetOutput(new(noopWriter)) + log.SetOutput(ioutil.Discard) } -type noopWriter int - -func (nw *noopWriter) Write(b []byte) (int, error) { - return len(b), nil +func noopExporter(ctx context.Context, ev event.Event, tagMap event.TagMap) context.Context { + return ctx } - -var noopExporter = export.Spans(export.LogWriter(new(noopWriter), false))