mirror of
https://github.com/prometheus/prometheus.git
synced 2025-02-06 13:49:53 +00:00
Merge bf15569e18f7a9f99a07ee8e12d9bcb51f6f4e64 into cb096a8ea894af06aff1c4846857800a1cea9b8d
This commit is contained in:
commit
35378197a9
@ -620,15 +620,19 @@ func (it *intersectPostings) At() storage.SeriesRef {
|
||||
func (it *intersectPostings) doNext() bool {
|
||||
Loop:
|
||||
for {
|
||||
cont := false
|
||||
for _, p := range it.arr {
|
||||
if !p.Seek(it.cur) {
|
||||
return false
|
||||
}
|
||||
if p.At() > it.cur {
|
||||
it.cur = p.At()
|
||||
continue Loop
|
||||
cont = true
|
||||
}
|
||||
}
|
||||
if cont {
|
||||
continue Loop
|
||||
}
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
@ -47,6 +47,7 @@ func BenchmarkQuerier(b *testing.B) {
|
||||
}
|
||||
|
||||
for n := 0; n < 10; n++ {
|
||||
addSeries(labels.FromStrings("a", strconv.Itoa(n)+postingsBenchSuffix))
|
||||
for i := 0; i < 100000; i++ {
|
||||
addSeries(labels.FromStrings("i", strconv.Itoa(i)+postingsBenchSuffix, "n", strconv.Itoa(n)+postingsBenchSuffix, "j", "foo"))
|
||||
// Have some series that won't be matched, to properly test inverted matches.
|
||||
@ -101,7 +102,9 @@ func BenchmarkQuerier(b *testing.B) {
|
||||
func benchmarkPostingsForMatchers(b *testing.B, ir IndexReader) {
|
||||
ctx := context.Background()
|
||||
|
||||
a1 := labels.MustNewMatcher(labels.MatchEqual, "a", "1"+postingsBenchSuffix)
|
||||
n1 := labels.MustNewMatcher(labels.MatchEqual, "n", "1"+postingsBenchSuffix)
|
||||
n0_1 := labels.MustNewMatcher(labels.MatchEqual, "n", "0_1"+postingsBenchSuffix)
|
||||
nX := labels.MustNewMatcher(labels.MatchEqual, "n", "X"+postingsBenchSuffix)
|
||||
|
||||
jFoo := labels.MustNewMatcher(labels.MatchEqual, "j", "foo")
|
||||
@ -137,6 +140,7 @@ func benchmarkPostingsForMatchers(b *testing.B, ir IndexReader) {
|
||||
{`j="foo",n="1"`, []*labels.Matcher{jFoo, n1}},
|
||||
{`n="1",j!="foo"`, []*labels.Matcher{n1, jNotFoo}},
|
||||
{`n="1",i!="2"`, []*labels.Matcher{n1, iNot2}},
|
||||
{`n="0_1",j="foo,a="1"`, []*labels.Matcher{n0_1, jFoo, a1}},
|
||||
{`n="X",j!="foo"`, []*labels.Matcher{nX, jNotFoo}},
|
||||
{`i=~"1[0-9]",j=~"foo|bar"`, []*labels.Matcher{iCharSet, jFooBar}},
|
||||
{`j=~"foo|bar"`, []*labels.Matcher{jFooBar}},
|
||||
@ -176,8 +180,12 @@ func benchmarkPostingsForMatchers(b *testing.B, ir IndexReader) {
|
||||
b.ReportAllocs()
|
||||
b.ResetTimer()
|
||||
for i := 0; i < b.N; i++ {
|
||||
_, err := PostingsForMatchers(ctx, ir, c.matchers...)
|
||||
p, err := PostingsForMatchers(ctx, ir, c.matchers...)
|
||||
require.NoError(b, err)
|
||||
// Iterate over the postings
|
||||
for p.Next() {
|
||||
// Do nothing
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user