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