mirror of
https://github.com/featurebasedb/featurebase.git
synced 2026-09-07 00:55:55 +00:00
Add benchmarks
This commit is contained in:
parent
443f2d8f7c
commit
905cda7f08
2 changed files with 75 additions and 1 deletions
|
|
@ -4863,7 +4863,7 @@ func unionInterval16InPlace(a, b []interval16) ([]interval16, int32) {
|
|||
}
|
||||
fromB = 0
|
||||
a, off = appendInterval16At(a, val, off)
|
||||
n += int32(val.last-val.start) + 1
|
||||
n += int32(val.last) - int32(val.start) + 1
|
||||
}
|
||||
|
||||
if aii == 2 {
|
||||
|
|
|
|||
|
|
@ -4329,3 +4329,77 @@ func TestDifferenceInPlace_N(t *testing.T) {
|
|||
t.Error("expected difference of containers to have n=0")
|
||||
}
|
||||
}
|
||||
|
||||
func BenchmarkUnionRunRunInPlace(bm *testing.B) {
|
||||
bm.Skip("Skipping long running BenchmarkUnionRunRunInPlace")
|
||||
|
||||
runs := []struct {
|
||||
name string
|
||||
fn func() []interval16
|
||||
}{
|
||||
{"FirstBitSet", runFirstBitSet},
|
||||
{"LastBitSet", runLastBitSet},
|
||||
{"FirstBitUnset", runFirstBitUnset},
|
||||
{"LastBitUnset", runLastBitUnset},
|
||||
{"InnerBitsSet", runInnerBitsSet},
|
||||
{"OuterBitsSet", runOuterBitsSet},
|
||||
{"OddBitsSet", runOddBitsSet},
|
||||
{"EvenBitsSet", runEvenBitsSet},
|
||||
}
|
||||
|
||||
for _, ar := range runs {
|
||||
for _, br := range runs {
|
||||
bm.Run("RunToBitmapRun-"+ar.name+"_"+br.name, func(bm *testing.B) {
|
||||
for i := 0; i < bm.N; i++ {
|
||||
arun := doContainer(containerRun, ar.fn())
|
||||
brun := doContainer(containerRun, br.fn())
|
||||
|
||||
abmp := arun.runToBitmap()
|
||||
unionBitmapRunInPlace(abmp, brun)
|
||||
}
|
||||
})
|
||||
|
||||
bm.Run("RunRun-"+ar.name+"_"+br.name, func(bm *testing.B) {
|
||||
for i := 0; i < bm.N; i++ {
|
||||
arun := doContainer(containerRun, ar.fn())
|
||||
brun := doContainer(containerRun, br.fn())
|
||||
|
||||
unionRunRunInPlace(arun, brun)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestUnionRunRunInPlaceBitwiseCompare(t *testing.T) {
|
||||
runs := []struct {
|
||||
name string
|
||||
run []interval16
|
||||
}{
|
||||
{name: "FirstBitSet", run: runFirstBitSet()},
|
||||
{name: "LastBitSet", run: runLastBitSet()},
|
||||
{name: "FirstBitUnset", run: runFirstBitUnset()},
|
||||
{name: "LastBitUnset", run: runLastBitUnset()},
|
||||
{name: "InnerBitsSet", run: runInnerBitsSet()},
|
||||
{name: "OuterBitsSet", run: runOuterBitsSet()},
|
||||
{name: "OddBitsSet", run: runOddBitsSet()},
|
||||
{name: "EvenBitsSet", run: runEvenBitsSet()},
|
||||
}
|
||||
|
||||
for _, a := range runs {
|
||||
for _, b := range runs {
|
||||
t.Run(a.name+"-"+b.name, func(t *testing.T) {
|
||||
arun := doContainer(containerRun, a.run)
|
||||
brun := doContainer(containerRun, b.run)
|
||||
|
||||
out1 := unionBitmapRunInPlace(arun.runToBitmap(), brun)
|
||||
out2 := unionRunRunInPlace(arun, brun)
|
||||
|
||||
err := out1.BitwiseCompare(out2.runToBitmap())
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue