VictoriaMetrics/lib/storage/block_stream_reader_timing_test.go
2019-05-23 00:18:06 +03:00

58 lines
1.5 KiB
Go

package storage
import (
"fmt"
"testing"
)
func BenchmarkBlockStreamReaderBlocksWorstCase(b *testing.B) {
benchmarkBlockStreamReader(b, benchInmemoryPartWorstCase, false)
}
func BenchmarkBlockStreamReaderBlocksBestCase(b *testing.B) {
benchmarkBlockStreamReader(b, benchInmemoryPartBestCase, false)
}
func BenchmarkBlockStreamReaderRowsWorstCase(b *testing.B) {
benchmarkBlockStreamReader(b, benchInmemoryPartWorstCase, true)
}
func BenchmarkBlockStreamReaderRowsBestCase(b *testing.B) {
benchmarkBlockStreamReader(b, benchInmemoryPartBestCase, true)
}
func benchmarkBlockStreamReader(b *testing.B, mp *inmemoryPart, readRows bool) {
b.ReportAllocs()
b.SetBytes(int64(mp.ph.RowsCount))
b.RunParallel(func(pb *testing.PB) {
var bsr blockStreamReader
blockNum := 0
for pb.Next() {
bsr.InitFromInmemoryPart(mp)
for bsr.NextBlock() {
if !readRows {
continue
}
if err := bsr.Block.UnmarshalData(); err != nil {
panic(fmt.Errorf("unexpected error when unmarshaling rows on block %d: %s", blockNum, err))
}
for bsr.Block.nextRow() {
}
}
if err := bsr.Error(); err != nil {
panic(fmt.Errorf("unexpected error when reading block %d: %s", blockNum, err))
}
blockNum++
}
})
}
var benchInmemoryPartWorstCase = newTestInmemoryPart(benchRawRowsWorstCase)
var benchInmemoryPartBestCase = newTestInmemoryPart(benchRawRowsBestCase)
func newTestInmemoryPart(rows []rawRow) *inmemoryPart {
var mp inmemoryPart
mp.InitFromRows(rows)
return &mp
}