From 9b1a5f7001c63ab2c8896e13d72411358838a2dd Mon Sep 17 00:00:00 2001 From: Bogdan Drutu Date: Tue, 20 Jul 2021 08:57:22 -0700 Subject: [PATCH] Performance improvement: avoid creating multiple same read-only objects (#2104) Signed-off-by: Bogdan Drutu Co-authored-by: Tyler Yahn --- sdk/trace/span.go | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/sdk/trace/span.go b/sdk/trace/span.go index da18e62c0..722f35476 100644 --- a/sdk/trace/span.go +++ b/sdk/trace/span.go @@ -262,11 +262,13 @@ func (s *span) End(options ...trace.SpanEndOption) { } s.mu.Unlock() - sps, ok := s.tracer.provider.spanProcessors.Load().(spanProcessorStates) - mustExportOrProcess := ok && len(sps) > 0 - if mustExportOrProcess { + if sps, ok := s.tracer.provider.spanProcessors.Load().(spanProcessorStates); ok { + if len(sps) == 0 { + return + } + snap := s.snapshot() for _, sp := range sps { - sp.sp.OnEnd(s.snapshot()) + sp.sp.OnEnd(snap) } } }