github.com/cosmos/cosmos-sdk@v0.50.10/types/bench_test.go (about) 1 package types_test 2 3 import ( 4 "testing" 5 6 sdkmath "cosmossdk.io/math" 7 8 sdk "github.com/cosmos/cosmos-sdk/types" 9 ) 10 11 var coinStrs = []string{ 12 "2000ATM", 13 "5000AMX", 14 "192XXX", 15 "1e9BTC", 16 } 17 18 func BenchmarkParseCoin(b *testing.B) { 19 var blankCoin sdk.Coin 20 b.ReportAllocs() 21 for i := 0; i < b.N; i++ { 22 for _, coinStr := range coinStrs { 23 coin, err := sdk.ParseCoinNormalized(coinStr) 24 if err != nil { 25 b.Fatal(err) 26 } 27 if coin == blankCoin { 28 b.Fatal("Unexpectedly returned a blank coin") 29 } 30 } 31 } 32 } 33 34 func BenchmarkUintMarshal(b *testing.B) { 35 values := []uint64{ 36 0, 37 1, 38 1 << 10, 39 1<<10 - 3, 40 1<<63 - 1, 41 1<<32 - 7, 42 1<<22 - 8, 43 } 44 45 var scratch [20]byte 46 b.ReportAllocs() 47 for i := 0; i < b.N; i++ { 48 for _, value := range values { 49 u := sdkmath.NewUint(value) 50 n, err := u.MarshalTo(scratch[:]) 51 if err != nil { 52 b.Fatal(err) 53 } 54 b.SetBytes(int64(n)) 55 } 56 } 57 } 58 59 func BenchmarkIntMarshal(b *testing.B) { 60 values := []int64{ 61 0, 62 1, 63 1 << 10, 64 1<<10 - 3, 65 1<<63 - 1, 66 1<<32 - 7, 67 1<<22 - 8, 68 } 69 70 var scratch [20]byte 71 b.ReportAllocs() 72 for i := 0; i < b.N; i++ { 73 for _, value := range values { 74 in := sdkmath.NewInt(value) 75 n, err := in.MarshalTo(scratch[:]) 76 if err != nil { 77 b.Fatal(err) 78 } 79 b.SetBytes(int64(n)) 80 } 81 } 82 }