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  }