From 8c9a0bc1dd6218c6a3ec6d228f0af75cc61a673d Mon Sep 17 00:00:00 2001 From: wweir Date: Mon, 15 Nov 2021 11:33:15 +0800 Subject: [PATCH] refactor: reduce memory usage --- util/suffix_tree.go | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/util/suffix_tree.go b/util/suffix_tree.go index ce8faf4..03890f7 100644 --- a/util/suffix_tree.go +++ b/util/suffix_tree.go @@ -1,6 +1,7 @@ package util import ( + "runtime" "strings" ) @@ -18,9 +19,24 @@ func NewNodeFromRules(rules ...string) *Node { for i := range rules { n.Add(rules[i]) } + + n.node = n.node.lite() + runtime.GC() return n } +func (n *node) lite() *node { + lite := &node{ + secs: make([]string, 0, len(n.secs)), + subNodes: make([]*node, 0, len(n.subNodes)), + } + lite.secs = append(lite.secs, n.secs...) + for i := range n.subNodes { + lite.subNodes = append(lite.subNodes, n.subNodes[i].lite()) + } + return lite +} + func (n *Node) String() string { return n.string("", " ") }