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()
|
w.lock.Lock()
|
||||||
defer w.lock.Unlock()
|
defer w.lock.Unlock()
|
||||||
|
|
||||||
for node := range nodes {
|
maps.Copy(w.State, nodes)
|
||||||
w.State[node] = struct{}{}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Copy deep-copies the witness object. Witness.Block isn't deep-copied as it
|
// 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,
|
// Generate the set of transactions per address to pull back into the pool,
|
||||||
// also updating the rest along the way
|
// 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 {
|
for addr := range transactors {
|
||||||
// Generate the set that was lost to reinject into the pool
|
// Generate the set that was lost to reinject into the pool
|
||||||
lost := make([]*types.Transaction, 0, len(discarded[addr]))
|
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)
|
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
|
// Update the set that was already reincluded to track the blocks in limbo
|
||||||
for _, tx := range types.TxDifference(included[addr], discarded[addr]) {
|
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 {
|
func TxDifference(a, b Transactions) Transactions {
|
||||||
keep := make(Transactions, 0, len(a))
|
keep := make(Transactions, 0, len(a))
|
||||||
|
|
||||||
remove := make(map[common.Hash]struct{})
|
remove := make(map[common.Hash]struct{}, b.Len())
|
||||||
for _, tx := range b {
|
for _, tx := range b {
|
||||||
remove[tx.Hash()] = struct{}{}
|
remove[tx.Hash()] = struct{}{}
|
||||||
}
|
}
|
||||||
|
|
|
@ -666,7 +666,7 @@ func (t *Trie) Witness() map[string]struct{} {
|
||||||
if len(t.tracer.accessList) == 0 {
|
if len(t.tracer.accessList) == 0 {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
witness := make(map[string]struct{})
|
witness := make(map[string]struct{}, len(t.tracer.accessList))
|
||||||
for _, node := range t.tracer.accessList {
|
for _, node := range t.tracer.accessList {
|
||||||
witness[string(node)] = struct{}{}
|
witness[string(node)] = struct{}{}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue