From 4dd469ff187b3ccee0c3dad28185d3a4b0c751fe Mon Sep 17 00:00:00 2001 From: Inanc Gumus Date: Sat, 10 Aug 2019 13:29:49 +0300 Subject: [PATCH] optimize: pipeline logparser --- .../log-parser-exp/pipeline.go | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/27-functional-programming/log-parser-exp/pipeline.go b/27-functional-programming/log-parser-exp/pipeline.go index 33635a5..24e2f46 100644 --- a/27-functional-programming/log-parser-exp/pipeline.go +++ b/27-functional-programming/log-parser-exp/pipeline.go @@ -40,10 +40,7 @@ func (p *pipeline) start() ([]result, error) { return nil, err } - var ( - out []result - gres = make(map[string]int) - ) + gres := make(map[string]result) for _, r := range res { if !p.filter(r) { @@ -51,14 +48,12 @@ func (p *pipeline) start() ([]result, error) { } k := p.groupKey(r) + gres[k] = r.add(gres[k]) + } - if i, ok := gres[k]; ok { - out[i] = out[i].add(r) - continue - } - gres[k] = len(out) - - out = append(out, r) + var out []result + for _, v := range gres { + out = append(out, v) } err = p.output(out)