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  }