From d9e5748a2743c28aa6eed16d6322af6f69a315b9 Mon Sep 17 00:00:00 2001 From: Bryan Boreham Date: Mon, 28 Jul 2025 14:54:32 +0100 Subject: [PATCH] [REFACTOR] Scraping: Remove unnecessary yolostring calls (#16927) Go will not allocate when reading from a map with a key cast from []byte to string. Also remove some yoloString calls in package `textparse` - call a more suitable library function. Signed-off-by: Bryan Boreham --- model/textparse/openmetricsparse.go | 2 +- model/textparse/promparse.go | 3 ++- scrape/scrape.go | 6 +++--- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/model/textparse/openmetricsparse.go b/model/textparse/openmetricsparse.go index d9c37a78b7..a0d259ce7c 100644 --- a/model/textparse/openmetricsparse.go +++ b/model/textparse/openmetricsparse.go @@ -183,7 +183,7 @@ func (p *OpenMetricsParser) Help() ([]byte, []byte) { m := p.l.b[p.offsets[0]:p.offsets[1]] // Replacer causes allocations. Replace only when necessary. - if strings.IndexByte(yoloString(p.text), byte('\\')) >= 0 { + if bytes.IndexByte(p.text, byte('\\')) >= 0 { // OpenMetrics always uses the Prometheus format label value escaping. return m, []byte(lvalReplacer.Replace(string(p.text))) } diff --git a/model/textparse/promparse.go b/model/textparse/promparse.go index 5ca61d1972..5f828d26dd 100644 --- a/model/textparse/promparse.go +++ b/model/textparse/promparse.go @@ -17,6 +17,7 @@ package textparse import ( + "bytes" "errors" "fmt" "io" @@ -199,7 +200,7 @@ func (p *PromParser) Help() ([]byte, []byte) { m := p.l.b[p.offsets[0]:p.offsets[1]] // Replacer causes allocations. Replace only when necessary. - if strings.IndexByte(yoloString(p.text), byte('\\')) >= 0 { + if bytes.IndexByte(p.text, byte('\\')) >= 0 { return m, []byte(helpReplacer.Replace(string(p.text))) } return m, p.text diff --git a/scrape/scrape.go b/scrape/scrape.go index b4f34a6f5b..84e00af600 100644 --- a/scrape/scrape.go +++ b/scrape/scrape.go @@ -1116,7 +1116,7 @@ func (c *scrapeCache) setType(mfName []byte, t model.MetricType) ([]byte, *metaE c.metaMtx.Lock() defer c.metaMtx.Unlock() - e, ok := c.metadata[yoloString(mfName)] + e, ok := c.metadata[string(mfName)] if !ok { e = &metaEntry{Metadata: metadata.Metadata{Type: model.MetricTypeUnknown}} c.metadata[string(mfName)] = e @@ -1133,7 +1133,7 @@ func (c *scrapeCache) setHelp(mfName, help []byte) ([]byte, *metaEntry) { c.metaMtx.Lock() defer c.metaMtx.Unlock() - e, ok := c.metadata[yoloString(mfName)] + e, ok := c.metadata[string(mfName)] if !ok { e = &metaEntry{Metadata: metadata.Metadata{Type: model.MetricTypeUnknown}} c.metadata[string(mfName)] = e @@ -1150,7 +1150,7 @@ func (c *scrapeCache) setUnit(mfName, unit []byte) ([]byte, *metaEntry) { c.metaMtx.Lock() defer c.metaMtx.Unlock() - e, ok := c.metadata[yoloString(mfName)] + e, ok := c.metadata[string(mfName)] if !ok { e = &metaEntry{Metadata: metadata.Metadata{Type: model.MetricTypeUnknown}} c.metadata[string(mfName)] = e