MakeKey related benchmarks

pull/9573/head
Stuart Carnie 2018-03-12 13:43:58 -07:00 committed by Stuart Carnie
parent 0c630a3cb5
commit 4d93b04d33
1 changed files with 72 additions and 0 deletions

View File

@ -2388,6 +2388,78 @@ func BenchmarkParseTags(b *testing.B) {
}
}
func BenchmarkEscapeMeasurement(b *testing.B) {
benchmarks := []struct {
m []byte
}{
{[]byte("this_is_a_test")},
{[]byte("this,is,a,test")},
}
for _, bm := range benchmarks {
b.Run(string(bm.m), func(b *testing.B) {
b.ReportAllocs()
for i := 0; i < b.N; i++ {
models.EscapeMeasurement(bm.m)
}
})
}
}
func makeTags(key, val string, n int) models.Tags {
tags := make(models.Tags, n)
for i := range tags {
tags[i].Key = []byte(fmt.Sprintf("%s%03d", key, i))
tags[i].Value = []byte(fmt.Sprintf("%s%03d", val, i))
}
return tags
}
func BenchmarkTags_HashKey(b *testing.B) {
benchmarks := []struct {
name string
t models.Tags
}{
{"5 tags-no esc", makeTags("tag_foo", "val_bar", 5)},
{"25 tags-no esc", makeTags("tag_foo", "val_bar", 25)},
{"5 tags-esc", makeTags("tag foo", "val bar", 5)},
{"25 tags-esc", makeTags("tag foo", "val bar", 25)},
}
for _, bm := range benchmarks {
b.Run(bm.name, func(b *testing.B) {
b.ReportAllocs()
for i := 0; i < b.N; i++ {
bm.t.HashKey()
}
})
}
}
func BenchmarkMakeKey(b *testing.B) {
benchmarks := []struct {
m []byte
t models.Tags
}{
{[]byte("this_is_a_test"), nil},
{[]byte("this,is,a,test"), nil},
{[]byte(`this\ is\ a\ test`), nil},
{[]byte("this_is_a_test"), makeTags("tag_foo", "val_bar", 8)},
{[]byte("this,is,a,test"), makeTags("tag_foo", "val_bar", 8)},
{[]byte("this_is_a_test"), makeTags("tag_foo", "val bar", 8)},
{[]byte("this,is,a,test"), makeTags("tag_foo", "val bar", 8)},
}
for _, bm := range benchmarks {
b.Run(string(bm.m), func(b *testing.B) {
b.ReportAllocs()
for i := 0; i < b.N; i++ {
models.MakeKey(bm.m, bm.t)
}
})
}
}
func init() {
// Force uint support to be enabled for testing.
models.EnableUintSupport()