From 2f9c9913c40aeff51694b937557b3947f58cd2be Mon Sep 17 00:00:00 2001 From: Bryan Boreham Date: Sun, 15 Sep 2019 13:39:08 +0000 Subject: [PATCH] perf(probe): reduce copying of nodes Where we know we are merging several reports into the one, we can call UnsafeMerge() and skip the copy that Merge() will do. --- probe/probe.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/probe/probe.go b/probe/probe.go index c609f63197..ac8bcf9f7c 100644 --- a/probe/probe.go +++ b/probe/probe.go @@ -183,7 +183,7 @@ func (p *Probe) report() report.Report { result := report.MakeReport() for i := 0; i < cap(reports); i++ { - result = result.Merge(<-reports) + result.UnsafeMerge(<-reports) } return result } @@ -210,11 +210,12 @@ func (p *Probe) tag(r report.Report) report.Report { func (p *Probe) drainAndPublish(rpt report.Report, rs chan report.Report) { p.rateLimiter.Wait(context.Background()) + rpt = rpt.Copy() ForLoop: for { select { case r := <-rs: - rpt = rpt.Merge(r) + rpt.UnsafeMerge(r) default: break ForLoop }