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
|
// Clear empties this set
|
||||||
func (ids *ShortSet) Clear() { *ids = nil }
|
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 {
|
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 {
|
for id := range ids {
|
||||||
if size <= 0 {
|
if i >= size {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
size--
|
idList[i] = NewShortID(id)
|
||||||
idList = append(idList, NewShortID(id))
|
i++
|
||||||
}
|
}
|
||||||
return idList
|
return idList
|
||||||
}
|
}
|
||||||
|
|
|
@ -71,9 +71,10 @@ func (s *set) Set(vdrs []Validator) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *set) set(vdrs []Validator) {
|
func (s *set) set(vdrs []Validator) {
|
||||||
s.vdrMap = make(map[[20]byte]int, len(vdrs))
|
lenVdrs := len(vdrs)
|
||||||
s.vdrSlice = s.vdrSlice[:0]
|
s.vdrMap = make(map[[20]byte]int, lenVdrs)
|
||||||
s.sampler.Weights = s.sampler.Weights[:0]
|
s.vdrSlice = make([]Validator, 0, lenVdrs)
|
||||||
|
s.sampler.Weights = make([]uint64, 0, lenVdrs)
|
||||||
|
|
||||||
for _, vdr := range vdrs {
|
for _, vdr := range vdrs {
|
||||||
s.add(vdr)
|
s.add(vdr)
|
||||||
|
|
|
@ -18,6 +18,7 @@ import (
|
||||||
"github.com/ava-labs/gecko/snow/consensus/snowman"
|
"github.com/ava-labs/gecko/snow/consensus/snowman"
|
||||||
"github.com/ava-labs/gecko/snow/engine/common"
|
"github.com/ava-labs/gecko/snow/engine/common"
|
||||||
"github.com/ava-labs/gecko/snow/validators"
|
"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/crypto"
|
||||||
"github.com/ava-labs/gecko/utils/formatting"
|
"github.com/ava-labs/gecko/utils/formatting"
|
||||||
"github.com/ava-labs/gecko/utils/logging"
|
"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/units"
|
||||||
"github.com/ava-labs/gecko/utils/wrappers"
|
"github.com/ava-labs/gecko/utils/wrappers"
|
||||||
"github.com/ava-labs/gecko/vms/components/ava"
|
"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/components/core"
|
||||||
"github.com/ava-labs/gecko/vms/secp256k1fx"
|
"github.com/ava-labs/gecko/vms/secp256k1fx"
|
||||||
)
|
)
|
||||||
|
@ -808,9 +808,11 @@ func (vm *VM) getValidators(validatorEvents *EventHeap) []validators.Validator {
|
||||||
validator.Wght = weight
|
validator.Wght = weight
|
||||||
}
|
}
|
||||||
|
|
||||||
vdrList := make([]validators.Validator, len(vdrMap))[:0]
|
vdrList := make([]validators.Validator, len(vdrMap), len(vdrMap))
|
||||||
|
i := 0
|
||||||
for _, validator := range vdrMap {
|
for _, validator := range vdrMap {
|
||||||
vdrList = append(vdrList, validator)
|
vdrList[i] = validator
|
||||||
|
i++
|
||||||
}
|
}
|
||||||
return vdrList
|
return vdrList
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue