github.com/cosmos/cosmos-proto@v1.0.0-beta.3/testpb/proto_message_bench_test.go (about) 1 package testpb 2 3 import ( 4 "testing" 5 6 "google.golang.org/protobuf/reflect/protoreflect" 7 ) 8 9 func Benchmark_Get_FR(b *testing.B) { 10 msg := &A{LIST: []*B{ 11 { 12 X: "test", 13 }, 14 }} 15 16 fd := msg.ProtoReflect().Descriptor().Fields().ByName("LIST") 17 18 b.ResetTimer() 19 20 for i := 0; i < b.N; i++ { 21 _ = msg.ProtoReflect().Get(fd) 22 } 23 } 24 25 func Benchmark_Get_SR(b *testing.B) { 26 msg := &A{LIST: []*B{ 27 { 28 X: "test", 29 }, 30 }} 31 32 fd := msg.ProtoReflect().Descriptor().Fields().ByName("LIST") 33 34 b.ResetTimer() 35 36 for i := 0; i < b.N; i++ { 37 _ = msg.slowProtoReflect().Get(fd) 38 } 39 } 40 41 func Benchmark_WhichOneof_FR(b *testing.B) { 42 msg := &A{ONEOF: &A_ONEOF_B{}} 43 44 od := msg.ProtoReflect().Descriptor().Oneofs().ByName("ONEOF") 45 46 b.ResetTimer() 47 48 for i := 0; i < b.N; i++ { 49 _ = msg.ProtoReflect().WhichOneof(od) 50 } 51 } 52 53 func Benchmark_WhichOneof_SR(b *testing.B) { 54 msg := &A{ONEOF: &A_ONEOF_B{}} 55 56 od := msg.ProtoReflect().Descriptor().Oneofs().ByName("ONEOF") 57 58 b.ResetTimer() 59 60 for i := 0; i < b.N; i++ { 61 _ = msg.slowProtoReflect().WhichOneof(od) 62 } 63 } 64 65 func Benchmark_Has_FR(b *testing.B) { 66 msg := &A{BYTES: nil} 67 fd := (&A{}).ProtoReflect().Descriptor().Fields().ByName("BYTES") 68 69 b.ResetTimer() 70 71 for i := 0; i < b.N; i++ { 72 msg.ProtoReflect().Has(fd) 73 } 74 } 75 76 func Benchmark_Has_SR(b *testing.B) { 77 msg := &A{BYTES: nil} 78 fd := (&A{}).ProtoReflect().Descriptor().Fields().ByName("BYTES") 79 80 b.ResetTimer() 81 82 for i := 0; i < b.N; i++ { 83 _ = msg.slowProtoReflect().Has(fd) 84 } 85 } 86 87 func Benchmark_Clear_FR(b *testing.B) { 88 msg := &A{BYTES: []byte("test")} 89 fd := (&A{}).ProtoReflect().Descriptor().Fields().ByName("BYTES") 90 91 b.ResetTimer() 92 93 for i := 0; i < b.N; i++ { 94 msg.ProtoReflect().Clear(fd) 95 } 96 } 97 98 func Benchmark_Clear_SR(b *testing.B) { 99 msg := &A{BYTES: []byte("test")} 100 fd := (&A{}).ProtoReflect().Descriptor().Fields().ByName("BYTES") 101 102 b.ResetTimer() 103 104 for i := 0; i < b.N; i++ { 105 msg.slowProtoReflect().Clear(fd) 106 } 107 } 108 109 func Benchmark_Set_FR(b *testing.B) { 110 msg := &A{} 111 fd := (&A{}).ProtoReflect().Descriptor().Fields().ByName("BYTES") 112 v := protoreflect.ValueOfBytes([]byte("test")) 113 b.ResetTimer() 114 115 for i := 0; i < b.N; i++ { 116 msg.ProtoReflect().Set(fd, v) 117 } 118 } 119 120 func Benchmark_Set_SR(b *testing.B) { 121 msg := &A{} 122 fd := (&A{}).ProtoReflect().Descriptor().Fields().ByName("BYTES") 123 v := protoreflect.ValueOfBytes([]byte("test")) 124 b.ResetTimer() 125 126 for i := 0; i < b.N; i++ { 127 msg.slowProtoReflect().Set(fd, v) 128 } 129 } 130 131 func Benchmark_NewField_FR(b *testing.B) { 132 msg := &A{} 133 fd := (&A{}).ProtoReflect().Descriptor().Fields().ByName("BYTES") 134 b.ResetTimer() 135 136 for i := 0; i < b.N; i++ { 137 _ = msg.ProtoReflect().NewField(fd) 138 } 139 } 140 141 func Benchmark_NewField_SR(b *testing.B) { 142 msg := &A{} 143 fd := (&A{}).ProtoReflect().Descriptor().Fields().ByName("BYTES") 144 b.ResetTimer() 145 146 for i := 0; i < b.N; i++ { 147 _ = msg.slowProtoReflect().NewField(fd) 148 } 149 } 150 151 func Benchmark_Mutable_FR(b *testing.B) { 152 msg := &A{} 153 fd := (&A{}).ProtoReflect().Descriptor().Fields().ByName("MESSAGE") 154 b.ResetTimer() 155 156 for i := 0; i < b.N; i++ { 157 _ = msg.ProtoReflect().Mutable(fd) 158 } 159 } 160 161 func Benchmark_Mutable_SR(b *testing.B) { 162 msg := &A{} 163 fd := (&A{}).ProtoReflect().Descriptor().Fields().ByName("MESSAGE") 164 b.ResetTimer() 165 166 for i := 0; i < b.N; i++ { 167 _ = msg.slowProtoReflect().NewField(fd) 168 } 169 } 170 171 func Benchmark_Range_FR(b *testing.B) { 172 msg := &A{ 173 Enum: Enumeration_Two, 174 SomeBoolean: true, 175 INT32: 2, 176 SINT32: 3, 177 UINT32: 4, 178 INT64: 5, 179 SING64: 6, 180 UINT64: 7, 181 SFIXED32: 8, 182 FIXED32: 9, 183 FLOAT: 10.1, 184 SFIXED64: 11, 185 FIXED64: 12, 186 DOUBLE: 13, 187 STRING: "fourteen", 188 BYTES: []byte("fifteen"), 189 MESSAGE: &B{X: "something"}, 190 MAP: map[string]*B{"a": &B{X: "aa"}}, 191 LIST: []*B{{X: "list"}}, 192 ONEOF: &A_ONEOF_B{ONEOF_B: &B{X: "ONEOF"}}, 193 LIST_ENUM: []Enumeration{Enumeration_One}, 194 } 195 196 for i := 0; i < b.N; i++ { 197 msg.ProtoReflect().Range(func(_ protoreflect.FieldDescriptor, _ protoreflect.Value) bool { 198 return true 199 }) 200 } 201 } 202 203 func Benchmark_Range_SR(b *testing.B) { 204 msg := &A{ 205 Enum: Enumeration_Two, 206 SomeBoolean: true, 207 INT32: 2, 208 SINT32: 3, 209 UINT32: 4, 210 INT64: 5, 211 SING64: 6, 212 UINT64: 7, 213 SFIXED32: 8, 214 FIXED32: 9, 215 FLOAT: 10.1, 216 SFIXED64: 11, 217 FIXED64: 12, 218 DOUBLE: 13, 219 STRING: "fourteen", 220 BYTES: []byte("fifteen"), 221 MESSAGE: &B{X: "something"}, 222 MAP: map[string]*B{"a": &B{X: "aa"}}, 223 LIST: []*B{{X: "list"}}, 224 ONEOF: &A_ONEOF_B{ONEOF_B: &B{X: "ONEOF"}}, 225 LIST_ENUM: []Enumeration{Enumeration_One}, 226 } 227 228 for i := 0; i < b.N; i++ { 229 msg.slowProtoReflect().Range(func(_ protoreflect.FieldDescriptor, _ protoreflect.Value) bool { 230 return true 231 }) 232 } 233 } 234 235 func Benchmark_Type_FR(b *testing.B) { 236 a := &A{} 237 238 for i := 0; i < b.N; i++ { 239 _ = a.ProtoReflect().Type() 240 } 241 } 242 243 func Benchmark_Type_SR(b *testing.B) { 244 a := &A{} 245 246 for i := 0; i < b.N; i++ { 247 _ = a.slowProtoReflect().Type() 248 } 249 } 250 251 func Benchmark_New_FR(b *testing.B) { 252 a := &A{} 253 254 for i := 0; i < b.N; i++ { 255 _ = a.ProtoReflect().New() 256 } 257 } 258 259 func Benchmark_New_SR(b *testing.B) { 260 a := &A{} 261 262 for i := 0; i < b.N; i++ { 263 _ = a.slowProtoReflect().New() 264 } 265 } 266 267 func Benchmark_Descriptor_FR(b *testing.B) { 268 a := &A{} 269 270 for i := 0; i < b.N; i++ { 271 _ = a.ProtoReflect().Descriptor() 272 } 273 } 274 275 func Benchmark_Descriptor_SR(b *testing.B) { 276 a := &A{} 277 278 for i := 0; i < b.N; i++ { 279 _ = a.slowProtoReflect().Descriptor() 280 } 281 } 282 283 func Benchmark_GetUnknown_FR(b *testing.B) { 284 a := &A{unknownFields: []byte("unknown")} 285 286 b.ResetTimer() 287 288 for i := 0; i < b.N; i++ { 289 _ = a.ProtoReflect().GetUnknown() 290 } 291 } 292 293 func Benchmark_GetUnknown_SR(b *testing.B) { 294 a := &A{unknownFields: []byte("unknown")} 295 296 b.ResetTimer() 297 298 for i := 0; i < b.N; i++ { 299 _ = a.slowProtoReflect().GetUnknown() 300 } 301 } 302 303 func Benchmark_SetUnknown_FR(b *testing.B) { 304 a := &A{} 305 f := []byte("unknown") 306 307 b.ResetTimer() 308 309 for i := 0; i < b.N; i++ { 310 a.ProtoReflect().SetUnknown(f) 311 } 312 } 313 314 func Benchmark_SetUnknown_SR(b *testing.B) { 315 a := &A{} 316 f := []byte("unknown") 317 318 b.ResetTimer() 319 320 for i := 0; i < b.N; i++ { 321 a.slowProtoReflect().SetUnknown(f) 322 } 323 }