github.com/Finschia/finschia-sdk@v0.48.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.ReportAllocs() 27 28 validators := make([]types.Validator, 0, n) 29 addressL, pubKeyL := makeRandomAddressesAndPublicKeys(n) 30 for i := 0; i < n; i++ { 31 addr, pubKey := addressL[i], pubKeyL[i] 32 validator := teststaking.NewValidator(b, addr, pubKey) 33 ni := int64(i + 1) 34 validator.Tokens = sdk.NewInt(ni) 35 validator.DelegatorShares = sdk.NewDec(ni) 36 validators = append(validators, validator) 37 } 38 39 b.ResetTimer() 40 for i := 0; i < b.N; i++ { 41 genesisState := types.DefaultGenesisState() 42 genesisState.Validators = validators 43 if err := staking.ValidateGenesis(genesisState); err != nil { 44 b.Fatal(err) 45 } 46 } 47 } 48 49 func makeRandomAddressesAndPublicKeys(n int) (accL []sdk.ValAddress, pkL []*ed25519.PubKey) { 50 for i := 0; i < n; i++ { 51 pk := ed25519.GenPrivKey().PubKey().(*ed25519.PubKey) 52 pkL = append(pkL, pk) 53 accL = append(accL, sdk.ValAddress(pk.Address())) 54 } 55 return accL, pkL 56 }