2019-08-22 11:27:18 +02:00
|
|
|
package opentsdbhttp
|
|
|
|
|
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
"github.com/valyala/fastjson"
|
|
|
|
)
|
|
|
|
|
|
|
|
func BenchmarkRowsUnmarshal(b *testing.B) {
|
|
|
|
s := `[{"metric": "cpu.usage_user", "timestamp": 1234556768, "value": 1.23, "tags": {"a":"b", "x": "y"}},
|
|
|
|
{"metric": "cpu.usage_system", "timestamp": 1234556768, "value": 23.344, "tags": {"a":"b"}},
|
|
|
|
{"metric": "cpu.usage_iowait", "timestamp": 1234556769, "value":3.3443, "tags": {"a":"b"}},
|
|
|
|
{"metric": "cpu.usage_irq", "timestamp": 1234556768, "value": 0.34432, "tags": {"a":"b"}}
|
|
|
|
]
|
|
|
|
`
|
|
|
|
b.SetBytes(int64(len(s)))
|
|
|
|
b.ReportAllocs()
|
|
|
|
b.RunParallel(func(pb *testing.PB) {
|
|
|
|
var rows Rows
|
|
|
|
var p fastjson.Parser
|
|
|
|
for pb.Next() {
|
|
|
|
v, err := p.Parse(s)
|
|
|
|
if err != nil {
|
2020-06-30 21:58:18 +02:00
|
|
|
panic(fmt.Errorf("cannot parse %q: %w", s, err))
|
2019-08-22 11:27:18 +02:00
|
|
|
}
|
2019-08-24 12:05:20 +02:00
|
|
|
rows.Unmarshal(v)
|
|
|
|
if len(rows.Rows) != 4 {
|
|
|
|
panic(fmt.Errorf("unexpected number of rows unmarshaled; got %d; want 4", len(rows.Rows)))
|
2019-08-22 11:27:18 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|