mirror of
https://github.com/prometheus/prometheus.git
synced 2025-01-26 13:11:11 -08:00
Labels.Has quick check on first character
Exit early if we've gone past - labels are sorted in order. Signed-off-by: Bryan Boreham <bjboreham@gmail.com>
This commit is contained in:
parent
33aab1b2cc
commit
b5c6807fea
|
@ -300,13 +300,26 @@ func (ls Labels) Get(name string) string {
|
|||
|
||||
// Has returns true if the label with the given name is present.
|
||||
func (ls Labels) Has(name string) bool {
|
||||
if name == "" { // Avoid crash in loop if someone asks for "".
|
||||
return false // Prometheus does not store blank label names.
|
||||
}
|
||||
for i := 0; i < len(ls.data); {
|
||||
var lName string
|
||||
lName, i = decodeString(ls.data, i)
|
||||
_, i = decodeString(ls.data, i)
|
||||
if lName == name {
|
||||
return true
|
||||
var size int
|
||||
size, i = decodeSize(ls.data, i)
|
||||
if ls.data[i] == name[0] {
|
||||
lName := ls.data[i : i+size]
|
||||
i += size
|
||||
if lName == name {
|
||||
return true
|
||||
}
|
||||
} else {
|
||||
if ls.data[i] > name[0] { // Stop looking if we've gone past.
|
||||
break
|
||||
}
|
||||
i += size
|
||||
}
|
||||
size, i = decodeSize(ls.data, i)
|
||||
i += size
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue