github.com/artisanhe/tools@v1.0.1-0.20210607022958-19a8fef2eb04/sqlx/gen/benchmark/benchmark_test.go (about)

     1  package benchmark
     2  
     3  import (
     4  	"testing"
     5  )
     6  
     7  type S struct{ a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z int64 }
     8  
     9  func Value() int64 {
    10  	return 0
    11  }
    12  
    13  func (S) Value() int64 {
    14  	return 0
    15  }
    16  
    17  func (t S) ValueWithVar() int64 {
    18  	return 0
    19  }
    20  
    21  func (t S) ValueAccess() int64 {
    22  	return t.a
    23  }
    24  
    25  func (*S) Pointer() int64 {
    26  	return 0
    27  }
    28  
    29  func (t *S) PointerAccess() int64 {
    30  	return t.a
    31  }
    32  
    33  func Benchmark_Access(b *testing.B) {
    34  	s := S{}
    35  	v := int64(0)
    36  	for i := 0; i < b.N; i++ {
    37  		v = s.a
    38  	}
    39  	b.Log(v)
    40  }
    41  
    42  func Benchmark_Value(b *testing.B) {
    43  	for i := 0; i < b.N; i++ {
    44  		Value()
    45  	}
    46  }
    47  
    48  func Benchmark_ValueReceiver(b *testing.B) {
    49  	for i := 0; i < b.N; i++ {
    50  		(S{}).Value()
    51  	}
    52  }
    53  
    54  func Benchmark_ValueReceiverWithVar(b *testing.B) {
    55  	for i := 0; i < b.N; i++ {
    56  		(S{}).ValueWithVar()
    57  	}
    58  }
    59  
    60  func Benchmark_ValueReceiverWithAccess(b *testing.B) {
    61  	for i := 0; i < b.N; i++ {
    62  		(S{}).ValueAccess()
    63  	}
    64  }
    65  
    66  func Benchmark_ValueReceiverFromSomeId(b *testing.B) {
    67  	v := S{}
    68  	for i := 0; i < b.N; i++ {
    69  		v.Value()
    70  	}
    71  }
    72  
    73  func Benchmark_ValueReceiverWithAccessFromSomeId(b *testing.B) {
    74  	v := S{}
    75  	for i := 0; i < b.N; i++ {
    76  		v.ValueAccess()
    77  	}
    78  }
    79  
    80  func Benchmark_ValueReceiverForPointer(b *testing.B) {
    81  	p := &S{}
    82  	for i := 0; i < b.N; i++ {
    83  		p.Value()
    84  	}
    85  }
    86  
    87  func Benchmark_PointerReceiver(b *testing.B) {
    88  	p := &S{}
    89  	for i := 0; i < b.N; i++ {
    90  		p.Pointer()
    91  	}
    92  }