@@ -32,6 +32,51 @@ func BenchmarkPrefillFromSortedList(b *testing.B) {
32
32
}
33
33
}
34
34
35
+ // go test -v -bench BenchmarkFillUpNative -benchmem -run ^$ github.com/weaviate/sroar -cpuprofile cpu.prof
36
+ func BenchmarkFillUpNative (b * testing.B ) {
37
+ for i := 0 ; i < b .N ; i ++ {
38
+ bm := Prefill (100_000_000 )
39
+ bm .FillUp (150_000_000 )
40
+ bm .FillUp (200_000_000 )
41
+ }
42
+ }
43
+
44
+ // go test -v -bench BenchmarkPrefillFromSortedList -benchmem -run ^$ github.com/weaviate/sroar -cpuprofile cpu.prof
45
+ func BenchmarkFillUpFromSortedList (b * testing.B ) {
46
+ prefillBufferSize := 65_536
47
+ maxVal1 := uint64 (100_000_000 )
48
+ maxVal2 := uint64 (150_000_000 )
49
+ maxVal3 := uint64 (200_000_000 )
50
+ inc := uint64 (prefillBufferSize )
51
+ buf := make ([]uint64 , prefillBufferSize )
52
+
53
+ for i := 0 ; i < b .N ; i ++ {
54
+ finalBM := NewBitmap ()
55
+
56
+ for i := uint64 (0 ); i <= maxVal1 ; i += inc {
57
+ j := uint64 (0 )
58
+ for ; j < inc && i + j <= maxVal1 ; j ++ {
59
+ buf [j ] = i + j
60
+ }
61
+ finalBM .Or (FromSortedList (buf [:j ]))
62
+ }
63
+ for i := maxVal1 + 1 ; i <= maxVal2 ; i += inc {
64
+ j := uint64 (0 )
65
+ for ; j < inc && i + j <= maxVal2 ; j ++ {
66
+ buf [j ] = i + j
67
+ }
68
+ finalBM .Or (FromSortedList (buf [:j ]))
69
+ }
70
+ for i := maxVal2 + 1 ; i <= maxVal3 ; i += inc {
71
+ j := uint64 (0 )
72
+ for ; j < inc && i + j <= maxVal3 ; j ++ {
73
+ buf [j ] = i + j
74
+ }
75
+ finalBM .Or (FromSortedList (buf [:j ]))
76
+ }
77
+ }
78
+ }
79
+
35
80
// ================================================================================
36
81
//
37
82
// BENCHMARKS comparing performance of different merge implementations
0 commit comments