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  }