MCPcopy Create free account
hub / github.com/RoaringBitmap/roaring / BenchmarkAndAny

Function BenchmarkAndAny

benchmark_test.go:1123–1206  ·  view source on GitHub ↗
(b *testing.B)

Source from the content-addressed store, hash-verified

1121}
1122
1123func BenchmarkAndAny(b *testing.B) {
1124 runSet := func(name string, base *Bitmap, filters []*Bitmap) {
1125 var (
1126 andFirstCard, orFirstCard, andAnyCard uint64
1127 andFirstRan, orFirstRan, andAnyRan bool
1128 )
1129
1130 b.Run(name+"_or-first", func(b *testing.B) {
1131 andAnyRan = true
1132 for n := 0; n < b.N; n++ {
1133 clone := base.Clone()
1134
1135 b.StartTimer()
1136 clone.And(FastOr(filters...))
1137 orFirstCard = clone.GetCardinality()
1138 b.StopTimer()
1139 }
1140 })
1141
1142 b.Run(name+"_and-first", func(b *testing.B) {
1143 orFirstRan = true
1144 for n := 0; n < b.N; n++ {
1145 anded := make([]*Bitmap, 0, len(filters))
1146
1147 b.StartTimer()
1148 for _, f := range filters {
1149 anded = append(anded, And(base, f))
1150 }
1151 andFirstCard = FastOr(anded...).GetCardinality()
1152 b.StopTimer()
1153 }
1154 })
1155
1156 b.Run(name+"_AndAny", func(b *testing.B) {
1157 andAnyRan = true
1158 for n := 0; n < b.N; n++ {
1159 clone := base.Clone()
1160
1161 b.StartTimer()
1162 clone.AndAny(filters...)
1163 andAnyCard = clone.GetCardinality()
1164 b.StopTimer()
1165 }
1166 })
1167
1168 if andFirstRan && andAnyRan && andFirstCard != andAnyCard {
1169 b.Fatalf("Cardinalities don't match: %d, %d", andFirstCard, andAnyCard)
1170 }
1171 if orFirstRan && andAnyRan && orFirstCard != andAnyCard {
1172 b.Fatalf("Cardinalities don't match: %d, %d", orFirstCard, andAnyCard)
1173 }
1174 }
1175
1176 r := rand.New(rand.NewSource(0))
1177
1178 genOne := func(r *rand.Rand, maxCount, domain int) *Bitmap {
1179 ret := NewBitmap()
1180 count := r.Intn(maxCount) + 5

Callers

nothing calls this directly

Calls 8

AndAnyMethod · 0.80
FastOrFunction · 0.70
AndFunction · 0.70
NewBitmapFunction · 0.70
CloneMethod · 0.45
AndMethod · 0.45
GetCardinalityMethod · 0.45
AddMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…