From c2248bed2bd3042303eb541644db28e82595b0b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B9=AC?= Date: Thu, 7 Jan 2021 14:12:28 +0800 Subject: [PATCH] op: low performance code (#102) thanks --- broker/lib/topics/memtopics.go | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/broker/lib/topics/memtopics.go b/broker/lib/topics/memtopics.go index 23a795a..c2ceb8e 100644 --- a/broker/lib/topics/memtopics.go +++ b/broker/lib/topics/memtopics.go @@ -256,16 +256,24 @@ func (this *snode) smatch(topic []byte, qos byte, subs *[]interface{}, qoss *[]b return err } - level := string(ntl) + // If the key is "#", then these subscribers are added to the result set + n, ok := this.snodes[MWC] + if ok { + n.matchQos(qos, subs, qoss) + } - for k, n := range this.snodes { - // If the key is "#", then these subscribers are added to the result set - if k == MWC { - n.matchQos(qos, subs, qoss) - } else if k == SWC || k == level { - if err := n.smatch(rem, qos, subs, qoss); err != nil { - return err - } + n, ok = this.snodes[SWC] + if ok { + if err := n.smatch(rem, qos, subs, qoss); err != nil { + return err + } + } + + level := string(ntl) + n, ok = this.snodes[level] + if ok { + if err := n.smatch(rem, qos, subs, qoss); err != nil { + return err } }