mirror of https://github.com/poanetwork/gecko.git
pre-allocate arrays
This commit is contained in:
parent
fc15e3cfe6
commit
c9aa8eedc2
|
@ -57,15 +57,23 @@ func (ids *ShortSet) Remove(idList ...ShortID) {
|
|||
// Clear empties this set
|
||||
func (ids *ShortSet) Clear() { *ids = nil }
|
||||
|
||||
// CappedList returns a list of length at most [size]. Size should be >= 0
|
||||
// CappedList returns a list of length at most [size].
|
||||
// Size should be >= 0. If size < 0, returns empty list.
|
||||
func (ids ShortSet) CappedList(size int) []ShortID {
|
||||
idList := make([]ShortID, size)[:0]
|
||||
if size < 0 {
|
||||
return make([]ShortID, 0, 0)
|
||||
}
|
||||
if l := ids.Len(); l < size {
|
||||
size = l
|
||||
}
|
||||
i := 0
|
||||
idList := make([]ShortID, size)
|
||||
for id := range ids {
|
||||
if size <= 0 {
|
||||
if i >= size {
|
||||
break
|
||||
}
|
||||
size--
|
||||
idList = append(idList, NewShortID(id))
|
||||
idList[i] = NewShortID(id)
|
||||
i++
|
||||
}
|
||||
return idList
|
||||
}
|
||||
|
|
|
@ -71,9 +71,10 @@ func (s *set) Set(vdrs []Validator) {
|
|||
}
|
||||
|
||||
func (s *set) set(vdrs []Validator) {
|
||||
s.vdrMap = make(map[[20]byte]int, len(vdrs))
|
||||
s.vdrSlice = s.vdrSlice[:0]
|
||||
s.sampler.Weights = s.sampler.Weights[:0]
|
||||
lenVdrs := len(vdrs)
|
||||
s.vdrMap = make(map[[20]byte]int, lenVdrs)
|
||||
s.vdrSlice = make([]Validator, 0, lenVdrs)
|
||||
s.sampler.Weights = make([]uint64, 0, lenVdrs)
|
||||
|
||||
for _, vdr := range vdrs {
|
||||
s.add(vdr)
|
||||
|
|
|
@ -18,6 +18,7 @@ import (
|
|||
"github.com/ava-labs/gecko/snow/consensus/snowman"
|
||||
"github.com/ava-labs/gecko/snow/engine/common"
|
||||
"github.com/ava-labs/gecko/snow/validators"
|
||||
"github.com/ava-labs/gecko/utils/codec"
|
||||
"github.com/ava-labs/gecko/utils/crypto"
|
||||
"github.com/ava-labs/gecko/utils/formatting"
|
||||
"github.com/ava-labs/gecko/utils/logging"
|
||||
|
@ -26,7 +27,6 @@ import (
|
|||
"github.com/ava-labs/gecko/utils/units"
|
||||
"github.com/ava-labs/gecko/utils/wrappers"
|
||||
"github.com/ava-labs/gecko/vms/components/ava"
|
||||
"github.com/ava-labs/gecko/utils/codec"
|
||||
"github.com/ava-labs/gecko/vms/components/core"
|
||||
"github.com/ava-labs/gecko/vms/secp256k1fx"
|
||||
)
|
||||
|
@ -808,9 +808,11 @@ func (vm *VM) getValidators(validatorEvents *EventHeap) []validators.Validator {
|
|||
validator.Wght = weight
|
||||
}
|
||||
|
||||
vdrList := make([]validators.Validator, len(vdrMap))[:0]
|
||||
vdrList := make([]validators.Validator, len(vdrMap), len(vdrMap))
|
||||
i := 0
|
||||
for _, validator := range vdrMap {
|
||||
vdrList = append(vdrList, validator)
|
||||
vdrList[i] = validator
|
||||
i++
|
||||
}
|
||||
return vdrList
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue