core, trie: prealloc capacity for maps (#30437)
- preallocate capacity for map - avoid `reinject` adding empty value - use `maps.Copy`
This commit is contained in:
parent
03424962f1
commit
ec596e06a5
@ -101,9 +101,7 @@ func (w *Witness) AddState(nodes map[string]struct{}) {
|
||||
w.lock.Lock()
|
||||
defer w.lock.Unlock()
|
||||
|
||||
for node := range nodes {
|
||||
w.State[node] = struct{}{}
|
||||
}
|
||||
maps.Copy(w.State, nodes)
|
||||
}
|
||||
|
||||
// Copy deep-copies the witness object. Witness.Block isn't deep-copied as it
|
||||
|
@ -940,7 +940,7 @@ func (p *BlobPool) reorg(oldHead, newHead *types.Header) (map[common.Address][]*
|
||||
}
|
||||
// Generate the set of transactions per address to pull back into the pool,
|
||||
// also updating the rest along the way
|
||||
reinject := make(map[common.Address][]*types.Transaction)
|
||||
reinject := make(map[common.Address][]*types.Transaction, len(transactors))
|
||||
for addr := range transactors {
|
||||
// Generate the set that was lost to reinject into the pool
|
||||
lost := make([]*types.Transaction, 0, len(discarded[addr]))
|
||||
@ -949,7 +949,9 @@ func (p *BlobPool) reorg(oldHead, newHead *types.Header) (map[common.Address][]*
|
||||
lost = append(lost, tx)
|
||||
}
|
||||
}
|
||||
reinject[addr] = lost
|
||||
if len(lost) > 0 {
|
||||
reinject[addr] = lost
|
||||
}
|
||||
|
||||
// Update the set that was already reincluded to track the blocks in limbo
|
||||
for _, tx := range types.TxDifference(included[addr], discarded[addr]) {
|
||||
|
@ -560,7 +560,7 @@ func (s Transactions) EncodeIndex(i int, w *bytes.Buffer) {
|
||||
func TxDifference(a, b Transactions) Transactions {
|
||||
keep := make(Transactions, 0, len(a))
|
||||
|
||||
remove := make(map[common.Hash]struct{})
|
||||
remove := make(map[common.Hash]struct{}, b.Len())
|
||||
for _, tx := range b {
|
||||
remove[tx.Hash()] = struct{}{}
|
||||
}
|
||||
|
@ -666,7 +666,7 @@ func (t *Trie) Witness() map[string]struct{} {
|
||||
if len(t.tracer.accessList) == 0 {
|
||||
return nil
|
||||
}
|
||||
witness := make(map[string]struct{})
|
||||
witness := make(map[string]struct{}, len(t.tracer.accessList))
|
||||
for _, node := range t.tracer.accessList {
|
||||
witness[string(node)] = struct{}{}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user