From a7e6d61b953c5cee660430215bcacd88e6e994ce Mon Sep 17 00:00:00 2001 From: Vasiliy Tolstov Date: Wed, 21 Jul 2021 14:29:13 +0300 Subject: [PATCH] meter: fast path for only one label Signed-off-by: Vasiliy Tolstov --- meter/meter.go | 24 +++++++++++++----------- meter/meter_test.go | 4 ++++ 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/meter/meter.go b/meter/meter.go index 05fc84ac..40c5213c 100644 --- a/meter/meter.go +++ b/meter/meter.go @@ -105,18 +105,20 @@ func BuildName(name string, labels ...string) string { labels = labels[:len(labels)-1] } - sort.Sort(byKey(labels)) + if len(labels) > 2 { + sort.Sort(byKey(labels)) - idx := 0 - for { - if labels[idx] == labels[idx+2] { - copy(labels[idx:], labels[idx+2:]) - labels = labels[:len(labels)-2] - } else { - idx += 2 - } - if idx+2 >= len(labels) { - break + idx := 0 + for { + if labels[idx] == labels[idx+2] { + copy(labels[idx:], labels[idx+2:]) + labels = labels[:len(labels)-2] + } else { + idx += 2 + } + if idx+2 >= len(labels) { + break + } } } diff --git a/meter/meter_test.go b/meter/meter_test.go index ddff5d91..c379e94a 100644 --- a/meter/meter_test.go +++ b/meter/meter_test.go @@ -56,6 +56,10 @@ func TestBuildName(t *testing.T) { "my_metric", "broker", "broker1", "broker", "broker2", "server", "http", "server", "tcp", "register", "mdns", }, + `my_metric{aaa="aaa"}`: []string{ + "my_metric", + "aaa", "aaa", + }, } for e, d := range data {