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 }