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 }