From 7ec72cb80746921c3f4b83c9251d9d3b99d3ff3c Mon Sep 17 00:00:00 2001 From: maskpp Date: Sun, 2 Nov 2025 14:00:23 +0800 Subject: [PATCH] pre alloc capacity for nodes and subset --- triedb/pathdb/nodes.go | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/triedb/pathdb/nodes.go b/triedb/pathdb/nodes.go index c6f9e7aece..cb5b14a527 100644 --- a/triedb/pathdb/nodes.go +++ b/triedb/pathdb/nodes.go @@ -259,7 +259,7 @@ func (s *nodeSet) decode(r *rlp.Stream) error { } } else { // Storage nodes - subset := make(map[string]*trienode.Node) + subset := make(map[string]*trienode.Node, len(entry.Nodes)) for _, n := range entry.Nodes { if len(n.Blob) > 0 { subset[string(n.Path)] = trienode.New(crypto.Keccak256Hash(n.Blob), n.Blob) @@ -276,13 +276,11 @@ func (s *nodeSet) decode(r *rlp.Stream) error { // write flushes nodes into the provided database batch as a whole. func (s *nodeSet) write(batch ethdb.Batch, clean *fastcache.Cache) int { - nodes := make(map[common.Hash]map[string]*trienode.Node) + nodes := make(map[common.Hash]map[string]*trienode.Node, len(s.storageNodes)+1) if len(s.accountNodes) > 0 { nodes[common.Hash{}] = s.accountNodes } - for owner, subset := range s.storageNodes { - nodes[owner] = subset - } + maps.Copy(nodes, s.storageNodes) return writeNodes(batch, nodes, clean) }