mirror of
https://github.com/VictoriaMetrics/VictoriaMetrics.git
synced 2024-11-21 14:44:00 +00:00
1d20a19c7d
This improves the code readability and debuggability, since the output of these functions stops depending on global state.
35 lines
1.1 KiB
Go
35 lines
1.1 KiB
Go
package storage
|
|
|
|
import (
|
|
"fmt"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func BenchmarkDeduplicateSamples(b *testing.B) {
|
|
const blockSize = 8192
|
|
timestamps := make([]int64, blockSize)
|
|
values := make([]float64, blockSize)
|
|
for i := 0; i < len(timestamps); i++ {
|
|
timestamps[i] = int64(i) * 1e3
|
|
}
|
|
for _, minScrapeInterval := range []time.Duration{time.Second, 2 * time.Second, 5 * time.Second, 10 * time.Second} {
|
|
b.Run(fmt.Sprintf("minScrapeInterval=%s", minScrapeInterval), func(b *testing.B) {
|
|
dedupInterval := minScrapeInterval.Milliseconds()
|
|
b.ReportAllocs()
|
|
b.SetBytes(blockSize)
|
|
b.RunParallel(func(pb *testing.PB) {
|
|
timestampsCopy := make([]int64, 0, blockSize)
|
|
valuesCopy := make([]float64, 0, blockSize)
|
|
for pb.Next() {
|
|
timestampsCopy := append(timestampsCopy[:0], timestamps...)
|
|
valuesCopy := append(valuesCopy[:0], values...)
|
|
ts, vs := DeduplicateSamples(timestampsCopy, valuesCopy, dedupInterval)
|
|
if len(ts) == 0 || len(vs) == 0 {
|
|
panic(fmt.Errorf("expecting non-empty results; got\nts=%v\nvs=%v", ts, vs))
|
|
}
|
|
}
|
|
})
|
|
})
|
|
}
|
|
}
|