github.com/cosmos/cosmos-proto@v1.0.0-beta.3/testpb/list_bench_test.go (about) 1 package testpb 2 3 import ( 4 "testing" 5 6 "google.golang.org/protobuf/reflect/protoreflect" 7 ) 8 9 func newFastList() protoreflect.List { 10 msg := &A{LIST: []*B{ 11 { 12 X: "test", 13 }, 14 }} 15 16 fd := msg.ProtoReflect().Descriptor().Fields().ByName("LIST") 17 18 list := msg.ProtoReflect().Get(fd).List() 19 20 return list 21 } 22 23 func newSlowList() protoreflect.List { 24 msg := &A{LIST: []*B{ 25 { 26 X: "test", 27 }, 28 }} 29 30 fd := msg.ProtoReflect().Descriptor().Fields().ByName("LIST") 31 32 list := msg.slowProtoReflect().Get(fd).List() 33 34 return list 35 } 36 37 func Benchmark_List_Get_FR(b *testing.B) { 38 list := newFastList() 39 40 b.ResetTimer() 41 42 for i := 0; i < b.N; i++ { 43 _ = list.Get(0) 44 } 45 } 46 47 func Benchmark_List_Get_SR(b *testing.B) { 48 list := newSlowList() 49 50 b.ResetTimer() 51 52 for i := 0; i < b.N; i++ { 53 _ = list.Get(0) 54 } 55 } 56 57 func Benchmark_List_Append_FR(b *testing.B) { 58 list := newFastList() 59 60 item := protoreflect.ValueOfMessage((&B{X: "test"}).ProtoReflect()) 61 62 b.ResetTimer() 63 for i := 0; i < b.N; i++ { 64 list.Append(item) 65 } 66 } 67 68 func Benchmark_List_Append_SR(b *testing.B) { 69 list := newSlowList() 70 item := protoreflect.ValueOfMessage((&B{X: "test"}).ProtoReflect()) 71 72 b.ResetTimer() 73 for i := 0; i < b.N; i++ { 74 list.Append(item) 75 } 76 } 77 78 func Benchmark_List_SetFR(b *testing.B) { 79 list := newFastList() 80 item := protoreflect.ValueOfMessage((&B{X: "test"}).ProtoReflect()) 81 b.ResetTimer() 82 83 for i := 0; i < b.N; i++ { 84 list.Set(0, item) 85 } 86 } 87 88 func Benchmark_List_SetSR(b *testing.B) { 89 list := newSlowList() 90 item := protoreflect.ValueOfMessage((&B{X: "test"}).ProtoReflect()) 91 92 b.ResetTimer() 93 94 for i := 0; i < b.N; i++ { 95 list.Set(0, item) 96 } 97 } 98 99 func Benchmark_List_Len_FR(b *testing.B) { 100 list := newFastList() 101 b.ResetTimer() 102 103 for i := 0; i < b.N; i++ { 104 list.Len() 105 } 106 } 107 108 func Benchmark_List_Len_SR(b *testing.B) { 109 list := newSlowList() 110 111 b.ResetTimer() 112 113 for i := 0; i < b.N; i++ { 114 list.Len() 115 } 116 } 117 118 func Benchmark_List_AppendMutable_FR(b *testing.B) { 119 list := newFastList() 120 121 b.ResetTimer() 122 123 for i := 0; i < b.N; i++ { 124 _ = list.AppendMutable() 125 } 126 } 127 128 func Benchmark_List_AppendMutable_SR(b *testing.B) { 129 list := newSlowList() 130 131 b.ResetTimer() 132 133 for i := 0; i < b.N; i++ { 134 _ = list.AppendMutable() 135 } 136 } 137 138 func Benchmark_List_NewElement_FR(b *testing.B) { 139 list := newFastList() 140 141 b.ResetTimer() 142 143 for i := 0; i < b.N; i++ { 144 _ = list.NewElement() 145 } 146 } 147 148 func Benchmark_List_NewElement_SR(b *testing.B) { 149 list := newSlowList() 150 151 b.ResetTimer() 152 153 for i := 0; i < b.N; i++ { 154 _ = list.NewElement() 155 } 156 } 157 158 func Benchmark_List_Truncate_FR(b *testing.B) { 159 list := newFastList() 160 161 b.ResetTimer() 162 163 for i := 0; i < b.N; i++ { 164 list.Truncate(1) 165 } 166 } 167 168 func Benchmark_List_Truncate_SR(b *testing.B) { 169 list := newSlowList() 170 171 b.ResetTimer() 172 173 for i := 0; i < b.N; i++ { 174 list.Truncate(1) 175 } 176 }