From 74c72945efdf4dc2e53a1553ac9947fd5a89ea54 Mon Sep 17 00:00:00 2001 From: Matthias Radestock Date: Tue, 2 Jan 2018 06:41:19 +0000 Subject: [PATCH] optimisation: no need to prune adjacencies in filterUnconnected since, by definition, unconnected nodes do not appear in adjacencies of other nodes --- render/filters.go | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/render/filters.go b/render/filters.go index c8f64904d..7cd77c9b8 100644 --- a/render/filters.go +++ b/render/filters.go @@ -189,12 +189,14 @@ type filterUnconnected struct { func (f filterUnconnected) Transform(input Nodes) Nodes { output := filterInternetAdjacencies(input.Nodes) connected := connected(output) - return FilterFunc(func(node report.Node) bool { - if _, ok := connected[node.ID]; ok || (f.onlyPseudo && !IsPseudoTopology(node)) { - return true + filtered := input.Filtered + for id, node := range output { + if _, ok := connected[id]; !ok && (!f.onlyPseudo || IsPseudoTopology(node)) { + delete(output, id) + filtered++ } - return false - }).Transform(Nodes{Nodes: output, Filtered: input.Filtered}) + } + return Nodes{Nodes: output, Filtered: filtered} } // FilterUnconnected is a transformer that filters unconnected nodes