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  }