Optimize GetControllerOf method
In addition create a similar method that doesn't copy objects. Benchmark for the new no-copy method vs the old one: ``` benchmark old ns/op new ns/op delta BenchmarkGetControllerOf-12 214 14.8 -93.08% benchmark old allocs new allocs delta BenchmarkGetControllerOf-12 1 0 -100.00% benchmark old bytes new bytes delta BenchmarkGetControllerOf-12 80 0 -100.00% ``` Benchamrk for the new (copy) method vs the old one: ``` benchmark old ns/op new ns/op delta BenchmarkGetControllerOf-12 128 114 -10.94% benchmark old allocs new allocs delta BenchmarkGetControllerOf-12 1 1 +0.00% benchmark old bytes new bytes delta BenchmarkGetControllerOf-12 80 80 +0.00% ``` Overall there is a 10% improvement for the old vs new (copy) method and huge improvent (x10) for the old vs new (no-copy). I changed the IsControlledBy and a few other methods to use the new (no-copy) method.
This commit is contained in:
@@ -64,7 +64,7 @@ func (m *BaseControllerRefManager) CanAdopt() error {
|
||||
//
|
||||
// No reconciliation will be attempted if the controller is being deleted.
|
||||
func (m *BaseControllerRefManager) ClaimObject(obj metav1.Object, match func(metav1.Object) bool, adopt, release func(metav1.Object) error) (bool, error) {
|
||||
controllerRef := metav1.GetControllerOf(obj)
|
||||
controllerRef := metav1.GetControllerOfNoCopy(obj)
|
||||
if controllerRef != nil {
|
||||
if controllerRef.UID != m.Controller.GetUID() {
|
||||
// Owned by someone else. Ignore.
|
||||
|
Reference in New Issue
Block a user