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 }