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  }