mirror of
https://github.com/prometheus/prometheus.git
synced 2025-03-05 20:59:13 -08:00
Use a fake SeriesIterator (that generates samples on the fly instead of using a slice) for BufferedSeriesIterator, to reduce the variance of benchmark results due to memory pressure. (#4847)
Signed-off-by: Alin Sinpalean <alin.sinpalean@gmail.com>
This commit is contained in:
parent
a2766a94a3
commit
d6adfe2ae2
|
@ -163,21 +163,8 @@ func TestBufferedSeriesIteratorNoBadAt(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func BenchmarkBufferedSeriesIterator(b *testing.B) {
|
func BenchmarkBufferedSeriesIterator(b *testing.B) {
|
||||||
var (
|
|
||||||
samples []sample
|
|
||||||
lastT int64
|
|
||||||
)
|
|
||||||
for i := 0; i < b.N; i++ {
|
|
||||||
lastT += 30
|
|
||||||
|
|
||||||
samples = append(samples, sample{
|
|
||||||
t: lastT,
|
|
||||||
v: 123, // doesn't matter
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// Simulate a 5 minute rate.
|
// Simulate a 5 minute rate.
|
||||||
it := NewBufferIterator(newListSeriesIterator(samples), 5*60)
|
it := NewBufferIterator(newFakeSeriesIterator(int64(b.N), 30), 5*60)
|
||||||
|
|
||||||
b.SetBytes(int64(b.N * 16))
|
b.SetBytes(int64(b.N * 16))
|
||||||
b.ReportAllocs()
|
b.ReportAllocs()
|
||||||
|
@ -255,3 +242,31 @@ func (it *listSeriesIterator) Seek(t int64) bool {
|
||||||
func (it *listSeriesIterator) Err() error {
|
func (it *listSeriesIterator) Err() error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type fakeSeriesIterator struct {
|
||||||
|
nsamples int64
|
||||||
|
step int64
|
||||||
|
idx int64
|
||||||
|
}
|
||||||
|
|
||||||
|
func newFakeSeriesIterator(nsamples, step int64) *fakeSeriesIterator {
|
||||||
|
return &fakeSeriesIterator{nsamples: nsamples, step: step, idx: -1}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (it *fakeSeriesIterator) At() (int64, float64) {
|
||||||
|
return it.idx * it.step, 123 // value doesn't matter
|
||||||
|
}
|
||||||
|
|
||||||
|
func (it *fakeSeriesIterator) Next() bool {
|
||||||
|
it.idx++
|
||||||
|
return it.idx < it.nsamples
|
||||||
|
}
|
||||||
|
|
||||||
|
func (it *fakeSeriesIterator) Seek(t int64) bool {
|
||||||
|
it.idx = t / it.step
|
||||||
|
return it.idx < it.nsamples
|
||||||
|
}
|
||||||
|
|
||||||
|
func (it *fakeSeriesIterator) Err() error {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue