Merge pull request #112649 from howardjohn/set/optimize-everything-nothing

Optimize `Everything` and `Nothing` label selectors
This commit is contained in:
Kubernetes Prow Robot 2022-11-02 21:39:57 -07:00 committed by GitHub
commit bbe050dd01
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -74,9 +74,12 @@ type Selector interface {
RequiresExactMatch(label string) (value string, found bool)
}
// Sharing this saves 1 alloc per use; this is safe because it's immutable.
var sharedEverythingSelector Selector = internalSelector{}
// Everything returns a selector that matches all labels.
func Everything() Selector {
return internalSelector{}
return sharedEverythingSelector
}
type nothingSelector struct{}
@ -91,9 +94,12 @@ func (n nothingSelector) RequiresExactMatch(label string) (value string, found b
return "", false
}
// Sharing this saves 1 alloc per use; this is safe because it's immutable.
var sharedNothingSelector Selector = nothingSelector{}
// Nothing returns a selector that matches no labels
func Nothing() Selector {
return nothingSelector{}
return sharedNothingSelector
}
// NewSelector returns a nil selector