prysm-pulse/proto/prysm/v1alpha1/attestation/aggregation/maxcover_bench_test.go
Raul Jordan d077483577
Add V3 Suffix to All Prysm Packages (#11083)
* v3 import renamings

* tidy

* fmt

* rev

* Update beacon-chain/core/epoch/precompute/reward_penalty_test.go

* Update beacon-chain/core/helpers/validators_test.go

* Update beacon-chain/db/alias.go

* Update beacon-chain/db/alias.go

* Update beacon-chain/db/alias.go

* Update beacon-chain/db/iface/BUILD.bazel

* Update beacon-chain/db/kv/kv.go

* Update beacon-chain/db/kv/state.go

* Update beacon-chain/rpc/prysm/v1alpha1/validator/attester_test.go

* Update beacon-chain/rpc/prysm/v1alpha1/validator/attester_test.go

* Update beacon-chain/sync/initial-sync/service.go

* fix deps

* fix bad replacements

* fix bad replacements

* change back

* gohashtree version

* fix deps

Co-authored-by: Nishant Das <nishdas93@gmail.com>
Co-authored-by: Potuz <potuz@prysmaticlabs.com>
2022-08-16 12:20:13 +00:00

107 lines
2.4 KiB
Go

package aggregation
import (
"fmt"
"testing"
"github.com/prysmaticlabs/go-bitfield"
"github.com/prysmaticlabs/prysm/v3/config/params"
aggtesting "github.com/prysmaticlabs/prysm/v3/proto/prysm/v1alpha1/attestation/aggregation/testing"
)
func BenchmarkMaxCoverProblem_MaxCover(b *testing.B) {
bitlistLen := params.BeaconConfig().MaxValidatorsPerCommittee
tests := []struct {
numCandidates uint64
numMarkedBits uint64
allowOverlaps bool
}{
{
numCandidates: 32,
numMarkedBits: 1,
},
{
numCandidates: 128,
numMarkedBits: 1,
},
{
numCandidates: 256,
numMarkedBits: 1,
},
{
numCandidates: 32,
numMarkedBits: 8,
},
{
numCandidates: 1024,
numMarkedBits: 8,
},
{
numCandidates: 2048,
numMarkedBits: 8,
},
{
numCandidates: 1024,
numMarkedBits: 32,
},
{
numCandidates: 2048,
numMarkedBits: 32,
},
{
numCandidates: 1024,
numMarkedBits: 128,
},
{
numCandidates: 2048,
numMarkedBits: 128,
},
{
numCandidates: 1024,
numMarkedBits: 512,
},
{
numCandidates: 2048,
numMarkedBits: 512,
},
}
for _, tt := range tests {
name := fmt.Sprintf("%d_attestations_with_%d_bit(s)_set", tt.numCandidates, tt.numMarkedBits)
b.Run(fmt.Sprintf("cur_%s", name), func(b *testing.B) {
b.StopTimer()
var bitlists []bitfield.Bitlist
if tt.numMarkedBits == 1 {
bitlists = aggtesting.BitlistsWithSingleBitSet(tt.numCandidates, bitlistLen)
} else {
bitlists = aggtesting.BitlistsWithMultipleBitSet(b, tt.numCandidates, bitlistLen, tt.numMarkedBits)
}
b.StartTimer()
for i := 0; i < b.N; i++ {
candidates := make([]*MaxCoverCandidate, len(bitlists))
for i := 0; i < len(bitlists); i++ {
candidates[i] = NewMaxCoverCandidate(i, &bitlists[i])
}
mc := &MaxCoverProblem{Candidates: candidates}
_, err := mc.Cover(len(bitlists), tt.allowOverlaps)
_ = err
}
})
b.Run(fmt.Sprintf("new_%s", name), func(b *testing.B) {
b.StopTimer()
var bitlists []*bitfield.Bitlist64
if tt.numMarkedBits == 1 {
bitlists = aggtesting.Bitlists64WithSingleBitSet(tt.numCandidates, bitlistLen)
} else {
bitlists = aggtesting.Bitlists64WithMultipleBitSet(b, tt.numCandidates, bitlistLen, tt.numMarkedBits)
}
b.StartTimer()
for i := 0; i < b.N; i++ {
_, _, err := MaxCover(bitlists, len(bitlists), tt.allowOverlaps)
_ = err
}
})
}
}