github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/libs/cosmos-sdk/x/bank/bench_test.go (about) 1 package bank_test 2 3 import ( 4 "testing" 5 6 abci "github.com/fibonacci-chain/fbc/libs/tendermint/abci/types" 7 8 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/simapp" 9 sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types" 10 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/auth" 11 authexported "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/auth/exported" 12 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/staking" 13 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/supply" 14 ) 15 16 var moduleAccAddr = supply.NewModuleAddress(staking.BondedPoolName) 17 18 func BenchmarkOneBankSendTxPerBlock(b *testing.B) { 19 // Add an account at genesis 20 acc := auth.BaseAccount{ 21 Address: addr1, 22 // Some value conceivably higher than the benchmarks would ever go 23 Coins: sdk.Coins{sdk.NewInt64Coin("foocoin", 100000000000)}, 24 } 25 26 // Construct genesis state 27 genAccs := []authexported.GenesisAccount{&acc} 28 benchmarkApp := simapp.SetupWithGenesisAccounts(genAccs) 29 30 // Precompute all txs 31 txs := simapp.GenSequenceOfTxs([]sdk.Msg{sendMsg1}, []uint64{0}, []uint64{uint64(0)}, b.N, priv1) 32 b.ResetTimer() 33 // Run this with a profiler, so its easy to distinguish what time comes from 34 // Committing, and what time comes from Check/Deliver Tx. 35 for i := 0; i < b.N; i++ { 36 benchmarkApp.BeginBlock(abci.RequestBeginBlock{}) 37 _, _, err := benchmarkApp.Check(txs[i]) 38 if err != nil { 39 panic("something is broken in checking transaction") 40 } 41 42 benchmarkApp.Deliver(txs[i]) 43 benchmarkApp.EndBlock(abci.RequestEndBlock{}) 44 benchmarkApp.Commit(abci.RequestCommit{}) 45 } 46 } 47 48 func BenchmarkOneBankMultiSendTxPerBlock(b *testing.B) { 49 // Add an account at genesis 50 acc := auth.BaseAccount{ 51 Address: addr1, 52 // Some value conceivably higher than the benchmarks would ever go 53 Coins: sdk.Coins{sdk.NewInt64Coin("foocoin", 100000000000)}, 54 } 55 56 // Construct genesis state 57 genAccs := []authexported.GenesisAccount{&acc} 58 benchmarkApp := simapp.SetupWithGenesisAccounts(genAccs) 59 60 // Precompute all txs 61 txs := simapp.GenSequenceOfTxs([]sdk.Msg{multiSendMsg1}, []uint64{0}, []uint64{uint64(0)}, b.N, priv1) 62 b.ResetTimer() 63 // Run this with a profiler, so its easy to distinguish what time comes from 64 // Committing, and what time comes from Check/Deliver Tx. 65 for i := 0; i < b.N; i++ { 66 benchmarkApp.BeginBlock(abci.RequestBeginBlock{}) 67 _, _, err := benchmarkApp.Check(txs[i]) 68 if err != nil { 69 panic("something is broken in checking transaction") 70 } 71 72 benchmarkApp.Deliver(txs[i]) 73 benchmarkApp.EndBlock(abci.RequestEndBlock{}) 74 benchmarkApp.Commit(abci.RequestCommit{}) 75 } 76 }