[ https://issues.apache.org/jira/browse/MYFACES-3774?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Leonardo Uribe resolved MYFACES-3774. ------------------------------------- Resolution: Fixed Fix Version/s: 2.2.0 > [perf] use facetName as a hint when try to find a component on refresh view > algorithm > ------------------------------------------------------------------------------------- > > Key: MYFACES-3774 > URL: https://issues.apache.org/jira/browse/MYFACES-3774 > Project: MyFaces Core > Issue Type: Improvement > Reporter: Leonardo Uribe > Assignee: Leonardo Uribe > Priority: Minor > Fix For: 2.2.0 > > > Checking some stuff I realized in ComponentTagHandlerDelegate.apply(...), the > following instructions are done when the view requires refresh in render > response phase: > String facetName = this.getFacetName(ctx, parent); > .... > c = ComponentSupport.findChildByTagId(parent, id); > .... > if (facetName == null) > { > parent.getChildren().remove(c); > } > else > { > ComponentSupport.removeFacet(ctx, parent, c, facetName); > } > .... > if (facetName == null) > { > parent.getChildren().add(c); > } > else > { > ComponentSupport.addFacet(ctx, parent, c, facetName); > } > The thing is if facetName == null the component will always be as a children. > If facetName != null, the component will always be in the facet associated to > that name. But the code in findChildByTagId(...) always look on the children > first and then in all facets using an iterator, which is just overkill. > It is better if we split findChildByTagId(...) into two variants > (findChildInFacetByTagId and findChildInChildrenByTagId) and use the > facetName as the condition and to get the right one if the component is in > the facet. That will save 1 iterator instance per facet and a lot of > unnecessary component.getAttributes().get(...) calls. But from the other > side, myfaces algorithm is smart enough to avoid view refreshing at all, so > the improvement will only be seen in some selected situations. Anyway, it is > worth to do it for 2.2.x branch. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira