github.com/Finschia/finschia-sdk@v0.49.1/x/staking/bench_test.go (about)

     1  package staking_test
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/Finschia/finschia-sdk/crypto/keys/ed25519"
     7  	sdk "github.com/Finschia/finschia-sdk/types"
     8  	"github.com/Finschia/finschia-sdk/x/staking"
     9  	"github.com/Finschia/finschia-sdk/x/staking/teststaking"
    10  	"github.com/Finschia/finschia-sdk/x/staking/types"
    11  )
    12  
    13  func BenchmarkValidateGenesis10Validators(b *testing.B) {
    14  	benchmarkValidateGenesis(b, 10)
    15  }
    16  
    17  func BenchmarkValidateGenesis100Validators(b *testing.B) {
    18  	benchmarkValidateGenesis(b, 100)
    19  }
    20  
    21  func BenchmarkValidateGenesis400Validators(b *testing.B) {
    22  	benchmarkValidateGenesis(b, 400)
    23  }
    24  
    25  func benchmarkValidateGenesis(b *testing.B, n int) {
    26  	b.Helper()
    27  	b.ReportAllocs()
    28  
    29  	validators := make([]types.Validator, 0, n)
    30  	addressL, pubKeyL := makeRandomAddressesAndPublicKeys(n)
    31  	for i := 0; i < n; i++ {
    32  		addr, pubKey := addressL[i], pubKeyL[i]
    33  		validator := teststaking.NewValidator(b, addr, pubKey)
    34  		ni := int64(i + 1)
    35  		validator.Tokens = sdk.NewInt(ni)
    36  		validator.DelegatorShares = sdk.NewDec(ni)
    37  		validators = append(validators, validator)
    38  	}
    39  
    40  	b.ResetTimer()
    41  	for i := 0; i < b.N; i++ {
    42  		genesisState := types.DefaultGenesisState()
    43  		genesisState.Validators = validators
    44  		if err := staking.ValidateGenesis(genesisState); err != nil {
    45  			b.Fatal(err)
    46  		}
    47  	}
    48  }
    49  
    50  func makeRandomAddressesAndPublicKeys(n int) (accL []sdk.ValAddress, pkL []*ed25519.PubKey) {
    51  	for i := 0; i < n; i++ {
    52  		pk := ed25519.GenPrivKey().PubKey().(*ed25519.PubKey)
    53  		pkL = append(pkL, pk)
    54  		accL = append(accL, sdk.ValAddress(pk.Address()))
    55  	}
    56  	return accL, pkL
    57  }