mirror of
https://github.com/VictoriaMetrics/VictoriaMetrics.git
synced 2025-03-21 15:45:01 +00:00
lib/{encoding,decimal}: add benchmarks for blocks containing zeros or ones
Time series with such values are quite common in monitoring space, so it would be great to have benchmarks for them.
This commit is contained in:
parent
370cfbb365
commit
808fc0971f
2 changed files with 43 additions and 7 deletions
|
@ -8,17 +8,38 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func BenchmarkAppendDecimalToFloat(b *testing.B) {
|
func BenchmarkAppendDecimalToFloat(b *testing.B) {
|
||||||
|
b.Run("VarNums", func(b *testing.B) {
|
||||||
|
benchmarkAppendDecimalToFloat(b, testVA)
|
||||||
|
})
|
||||||
|
b.Run("Zeros", func(b *testing.B) {
|
||||||
|
benchmarkAppendDecimalToFloat(b, testZeros)
|
||||||
|
})
|
||||||
|
b.Run("Ones", func(b *testing.B) {
|
||||||
|
benchmarkAppendDecimalToFloat(b, testOnes)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
func benchmarkAppendDecimalToFloat(b *testing.B, a []int64) {
|
||||||
b.ReportAllocs()
|
b.ReportAllocs()
|
||||||
b.SetBytes(int64(len(testVA)))
|
b.SetBytes(int64(len(a)))
|
||||||
b.RunParallel(func(pb *testing.PB) {
|
b.RunParallel(func(pb *testing.PB) {
|
||||||
var fa []float64
|
var fa []float64
|
||||||
for pb.Next() {
|
for pb.Next() {
|
||||||
fa = AppendDecimalToFloat(fa[:0], testVA, 0)
|
fa = AppendDecimalToFloat(fa[:0], a, 0)
|
||||||
atomic.AddUint64(&Sink, uint64(len(fa)))
|
atomic.AddUint64(&Sink, uint64(len(fa)))
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var testZeros = make([]int64, 8*1024)
|
||||||
|
var testOnes = func() []int64 {
|
||||||
|
a := make([]int64, 8*1024)
|
||||||
|
for i := 0; i < len(a); i++ {
|
||||||
|
a[i] = 1
|
||||||
|
}
|
||||||
|
return a
|
||||||
|
}()
|
||||||
|
|
||||||
func BenchmarkAppendFloatToDecimal(b *testing.B) {
|
func BenchmarkAppendFloatToDecimal(b *testing.B) {
|
||||||
b.Run("RealFloat", func(b *testing.B) {
|
b.Run("RealFloat", func(b *testing.B) {
|
||||||
benchmarkAppendFloatToDecimal(b, testFAReal)
|
benchmarkAppendFloatToDecimal(b, testFAReal)
|
||||||
|
@ -26,8 +47,23 @@ func BenchmarkAppendFloatToDecimal(b *testing.B) {
|
||||||
b.Run("Integers", func(b *testing.B) {
|
b.Run("Integers", func(b *testing.B) {
|
||||||
benchmarkAppendFloatToDecimal(b, testFAInteger)
|
benchmarkAppendFloatToDecimal(b, testFAInteger)
|
||||||
})
|
})
|
||||||
|
b.Run("Zeros", func(b *testing.B) {
|
||||||
|
benchmarkAppendFloatToDecimal(b, testFZeros)
|
||||||
|
})
|
||||||
|
b.Run("Ones", func(b *testing.B) {
|
||||||
|
benchmarkAppendFloatToDecimal(b, testFOnes)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var testFZeros = make([]float64, 8*1024)
|
||||||
|
var testFOnes = func() []float64 {
|
||||||
|
a := make([]float64, 8*1024)
|
||||||
|
for i := 0; i < len(a); i++ {
|
||||||
|
a[i] = 1
|
||||||
|
}
|
||||||
|
return a
|
||||||
|
}()
|
||||||
|
|
||||||
func benchmarkAppendFloatToDecimal(b *testing.B, fa []float64) {
|
func benchmarkAppendFloatToDecimal(b *testing.B, fa []float64) {
|
||||||
b.ReportAllocs()
|
b.ReportAllocs()
|
||||||
b.SetBytes(int64(len(fa)))
|
b.SetBytes(int64(len(fa)))
|
||||||
|
|
|
@ -32,7 +32,7 @@ func BenchmarkUnmarshalGaugeArray(b *testing.B) {
|
||||||
var dst []int64
|
var dst []int64
|
||||||
var err error
|
var err error
|
||||||
for pb.Next() {
|
for pb.Next() {
|
||||||
dst, err = unmarshalInt64Array(dst[:0], benchMarshaledGaugeArray, MarshalTypeZSTDNearestDelta, 0, len(benchGaugeArray))
|
dst, err = unmarshalInt64Array(dst[:0], benchMarshaledGaugeArray, MarshalTypeZSTDNearestDelta, benchGaugeArray[0], len(benchGaugeArray))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(fmt.Errorf("cannot unmarshal gauge array: %s", err))
|
panic(fmt.Errorf("cannot unmarshal gauge array: %s", err))
|
||||||
}
|
}
|
||||||
|
@ -79,7 +79,7 @@ func BenchmarkUnmarshalDeltaConstArray(b *testing.B) {
|
||||||
var dst []int64
|
var dst []int64
|
||||||
var err error
|
var err error
|
||||||
for pb.Next() {
|
for pb.Next() {
|
||||||
dst, err = unmarshalInt64Array(dst[:0], benchMarshaledDeltaConstArray, MarshalTypeDeltaConst, 0, len(benchDeltaConstArray))
|
dst, err = unmarshalInt64Array(dst[:0], benchMarshaledDeltaConstArray, MarshalTypeDeltaConst, benchDeltaConstArray[0], len(benchDeltaConstArray))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(fmt.Errorf("cannot unmarshal delta const array: %s", err))
|
panic(fmt.Errorf("cannot unmarshal delta const array: %s", err))
|
||||||
}
|
}
|
||||||
|
@ -126,7 +126,7 @@ func BenchmarkUnmarshalConstArray(b *testing.B) {
|
||||||
var dst []int64
|
var dst []int64
|
||||||
var err error
|
var err error
|
||||||
for pb.Next() {
|
for pb.Next() {
|
||||||
dst, err = unmarshalInt64Array(dst[:0], benchMarshaledConstArray, MarshalTypeConst, 0, len(benchConstArray))
|
dst, err = unmarshalInt64Array(dst[:0], benchMarshaledConstArray, MarshalTypeConst, benchConstArray[0], len(benchConstArray))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(fmt.Errorf("cannot unmarshal const array: %s", err))
|
panic(fmt.Errorf("cannot unmarshal const array: %s", err))
|
||||||
}
|
}
|
||||||
|
@ -171,7 +171,7 @@ func BenchmarkUnmarshalZeroConstArray(b *testing.B) {
|
||||||
var dst []int64
|
var dst []int64
|
||||||
var err error
|
var err error
|
||||||
for pb.Next() {
|
for pb.Next() {
|
||||||
dst, err = unmarshalInt64Array(dst[:0], benchMarshaledZeroConstArray, MarshalTypeConst, 0, len(benchZeroConstArray))
|
dst, err = unmarshalInt64Array(dst[:0], benchMarshaledZeroConstArray, MarshalTypeConst, benchZeroConstArray[0], len(benchZeroConstArray))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(fmt.Errorf("cannot unmarshal zero const array: %s", err))
|
panic(fmt.Errorf("cannot unmarshal zero const array: %s", err))
|
||||||
}
|
}
|
||||||
|
@ -210,7 +210,7 @@ func BenchmarkUnmarshalInt64Array(b *testing.B) {
|
||||||
var dst []int64
|
var dst []int64
|
||||||
var err error
|
var err error
|
||||||
for pb.Next() {
|
for pb.Next() {
|
||||||
dst, err = unmarshalInt64Array(dst[:0], benchMarshaledInt64Array, benchMarshalType, 0, len(benchInt64Array))
|
dst, err = unmarshalInt64Array(dst[:0], benchMarshaledInt64Array, benchMarshalType, benchInt64Array[0], len(benchInt64Array))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(fmt.Errorf("cannot unmarshal int64 array: %s", err))
|
panic(fmt.Errorf("cannot unmarshal int64 array: %s", err))
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue