Improve load tree performance

This commit is contained in:
Daniel 2024-06-21 23:37:47 +08:00
parent 84b42d447a
commit cb16111314
No known key found for this signature in database
GPG key ID: 86211BA83DF03017
3 changed files with 26 additions and 33 deletions

View file

@ -36,6 +36,23 @@ import (
"github.com/siyuan-note/siyuan/kernel/util"
)
func LoadTrees(ids []string) (ret map[string]*parse.Tree) {
ret = map[string]*parse.Tree{}
bts := treenode.GetBlockTrees(ids)
luteEngine := util.NewLute()
for id, bt := range bts {
if nil == ret[id] {
tree, err := LoadTree(bt.BoxID, bt.Path, luteEngine)
if nil != err {
logging.LogErrorf("load tree [%s] failed: %s", bt.Path, err)
continue
}
ret[id] = tree
}
}
return
}
func LoadTree(boxID, p string, luteEngine *lute.Lute) (ret *parse.Tree, err error) {
filePath := filepath.Join(util.DataDir, boxID, p)
data, err := filelock.ReadFile(filePath)