github.com/gnolang/gno@v0.0.0-20240520182011-228e9d0192ce/tm2/pkg/sdk/auth/keeper_bench_test.go (about)

     1  package auth
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/gnolang/gno/tm2/pkg/crypto"
     7  	"github.com/gnolang/gno/tm2/pkg/std"
     8  )
     9  
    10  func BenchmarkAccountMapperGetAccountFound(b *testing.B) {
    11  	if testing.Short() {
    12  		b.Skip("skipping testing in short mode")
    13  	}
    14  
    15  	env := setupTestEnv()
    16  
    17  	// assumes b.N < 2**24
    18  	for i := 0; i < b.N; i++ {
    19  		addr := make([]byte, crypto.AddressSize)
    20  		arr := []byte{byte((i & 0xFF0000) >> 16), byte((i & 0xFF00) >> 8), byte(i & 0xFF)}
    21  		copy(addr[:len(arr)], arr[:])
    22  		caddr := crypto.AddressFromBytes(addr)
    23  		acc := env.acck.NewAccountWithAddress(env.ctx, caddr)
    24  		env.acck.SetAccount(env.ctx, acc)
    25  	}
    26  
    27  	b.ResetTimer()
    28  	for i := 0; i < b.N; i++ {
    29  		addr := make([]byte, crypto.AddressSize)
    30  		arr := []byte{byte((i & 0xFF0000) >> 16), byte((i & 0xFF00) >> 8), byte(i & 0xFF)}
    31  		copy(addr[:len(arr)], arr[:])
    32  		caddr := crypto.AddressFromBytes(addr)
    33  		env.acck.GetAccount(env.ctx, caddr)
    34  	}
    35  }
    36  
    37  func BenchmarkAccountMapperGetAccountFoundWithCoins(b *testing.B) {
    38  	env := setupTestEnv()
    39  	coins := std.Coins{
    40  		std.NewCoin("ltc", int64(1000)),
    41  		std.NewCoin("btc", int64(1000)),
    42  		std.NewCoin("eth", int64(1000)),
    43  		std.NewCoin("xrp", int64(1000)),
    44  		std.NewCoin("bch", int64(1000)),
    45  		std.NewCoin("eos", int64(1000)),
    46  	}
    47  
    48  	// assumes b.N < 2**24
    49  	for i := 0; i < b.N; i++ {
    50  		addr := make([]byte, crypto.AddressSize)
    51  		arr := []byte{byte((i & 0xFF0000) >> 16), byte((i & 0xFF00) >> 8), byte(i & 0xFF)}
    52  		copy(addr[:len(arr)], arr[:])
    53  		caddr := crypto.AddressFromBytes(addr)
    54  		acc := env.acck.NewAccountWithAddress(env.ctx, caddr)
    55  		acc.SetCoins(coins)
    56  		env.acck.SetAccount(env.ctx, acc)
    57  	}
    58  
    59  	b.ResetTimer()
    60  	for i := 0; i < b.N; i++ {
    61  		addr := make([]byte, crypto.AddressSize)
    62  		arr := []byte{byte((i & 0xFF0000) >> 16), byte((i & 0xFF00) >> 8), byte(i & 0xFF)}
    63  		copy(addr[:len(arr)], arr[:])
    64  		caddr := crypto.AddressFromBytes(addr)
    65  		env.acck.GetAccount(env.ctx, caddr)
    66  	}
    67  }
    68  
    69  func BenchmarkAccountMapperSetAccount(b *testing.B) {
    70  	env := setupTestEnv()
    71  
    72  	b.ResetTimer()
    73  
    74  	// assumes b.N < 2**24
    75  	for i := 0; i < b.N; i++ {
    76  		addr := make([]byte, crypto.AddressSize)
    77  		arr := []byte{byte((i & 0xFF0000) >> 16), byte((i & 0xFF00) >> 8), byte(i & 0xFF)}
    78  		copy(addr[:len(arr)], arr[:])
    79  		caddr := crypto.AddressFromBytes(addr)
    80  		acc := env.acck.NewAccountWithAddress(env.ctx, caddr)
    81  		env.acck.SetAccount(env.ctx, acc)
    82  	}
    83  }
    84  
    85  func BenchmarkAccountMapperSetAccountWithCoins(b *testing.B) {
    86  	env := setupTestEnv()
    87  	coins := std.Coins{
    88  		std.NewCoin("ltc", int64(1000)),
    89  		std.NewCoin("btc", int64(1000)),
    90  		std.NewCoin("eth", int64(1000)),
    91  		std.NewCoin("xrp", int64(1000)),
    92  		std.NewCoin("bch", int64(1000)),
    93  		std.NewCoin("eos", int64(1000)),
    94  	}
    95  
    96  	b.ResetTimer()
    97  
    98  	// assumes b.N < 2**24
    99  	for i := 0; i < b.N; i++ {
   100  		addr := make([]byte, crypto.AddressSize)
   101  		arr := []byte{byte((i & 0xFF0000) >> 16), byte((i & 0xFF00) >> 8), byte(i & 0xFF)}
   102  		copy(addr[:len(arr)], arr[:])
   103  		caddr := crypto.AddressFromBytes(addr)
   104  		acc := env.acck.NewAccountWithAddress(env.ctx, caddr)
   105  		acc.SetCoins(coins)
   106  		env.acck.SetAccount(env.ctx, acc)
   107  	}
   108  }