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 }