diff --git a/api/internal/accumulator/namereferencetransformer.go b/api/internal/accumulator/namereferencetransformer.go index a94ebcdf007..28094c90d3f 100644 --- a/api/internal/accumulator/namereferencetransformer.go +++ b/api/internal/accumulator/namereferencetransformer.go @@ -109,11 +109,18 @@ func debug(fMap filterMap) { // 'spec/scaleTargetRef/name' field. Return a filter that can do that. func (t *nameReferenceTransformer) determineFilters( resources []*resource.Resource) (fMap filterMap) { + + // We cache the resource OrgId values because they don't change and otherwise are very visible in a memory pprof + resourceOrgIds := make([]resid.ResId, len(resources)) + for i, resource := range resources { + resourceOrgIds[i] = resource.OrgId() + } + fMap = make(filterMap) for _, backReference := range t.backRefs { for _, referrerSpec := range backReference.Referrers { - for _, res := range resources { - if res.OrgId().IsSelected(&referrerSpec.Gvk) { + for i, res := range resources { + if resourceOrgIds[i].IsSelected(&referrerSpec.Gvk) { // If this is true, the res might be a referrer, and if // so, the name reference it holds might need an update. if resHasField(res, referrerSpec.Path) {