github.com/davyxu/gomemql@v0.0.0-20190820093024-e64afc89c0a6/btreeimp/benchmark_test.go (about)

     1  package gomemql_btree
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/google/btree"
     7  )
     8  
     9  type tableDef_Id tableDef
    10  
    11  func (self *tableDef_Id) Less(than btree.Item) bool {
    12  
    13  	other := than.(*tableDef_Id)
    14  
    15  	if self.Id != other.Id {
    16  		return self.Id < other.Id
    17  	}
    18  
    19  	return false
    20  }
    21  
    22  func BenchmarkTest(b *testing.B) {
    23  
    24  	var tabData []*tableDef
    25  
    26  	// 预估每个索引包含的记录
    27  	for i := 0; i < 1000; i++ {
    28  		tabData = append(tabData, &tableDef{
    29  			Id:    int32(i + 1),
    30  			Level: int32(i * 10),
    31  			Name:  "kitty",
    32  		})
    33  	}
    34  
    35  	f1 := NewField()
    36  
    37  	for _, v := range tabData {
    38  
    39  		f1.AddRecord((*tableDef_Id)(v), v)
    40  	}
    41  
    42  	f2 := NewField()
    43  
    44  	for _, v := range tabData {
    45  
    46  		f2.AddRecord((*tableDef_Level)(v), v)
    47  	}
    48  
    49  	b.ResetTimer()
    50  	// 并发查询量
    51  	for i := 0; i < 3000; i++ {
    52  
    53  		NewQuery(func(el interface{}) {
    54  
    55  		}).Great(f1, &tableDef_Id{
    56  			Id: 50,
    57  		},
    58  		).Equal(f2, &tableDef_Level{
    59  			Level: 500,
    60  		},
    61  		).Start()
    62  
    63  	}
    64  }