core, trie: prealloc capacity for maps (#30437)

- preallocate capacity for map
- avoid `reinject` adding empty value
- use `maps.Copy`
pull/17439/merge
maskpp 4 days ago committed by GitHub
parent 03424962f1
commit ec596e06a5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 4
      core/stateless/witness.go
  2. 4
      core/txpool/blobpool/blobpool.go
  3. 2
      core/types/transaction.go
  4. 2
      trie/trie.go

@ -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)
} }
} }
if len(lost) > 0 {
reinject[addr] = lost 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…
Cancel
Save