myfaces-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Martin Koci <martin.kocicak.k...@gmail.com>
Subject Re: [core] performance: cache infos for views without build time modifications
Date Mon, 20 Feb 2012 19:10:56 GMT
Same situation for clientId: in "stable" component tree is clientId
always the same (state saving depends on it)

unfortunately has UIComponent no method setClientId. But we can try set
it via reflexion and compare if it brings an improvement or not.
Currently getClientId() uses lazy init and involves:

findParentNamingContainer
namingContainer.getContainerClientId
stringBuilder appends
renderer.convertClientId
 


Martin Koci píše v Pá 17. 02. 2012 v 18:56 +0100:
> Hi,
> 
> in situation, where no build-time  tags (c:if, co:foreach, ...) and no
> ui:include src="#{}" are used (and no direct component.getChildren()
> manipulation of course), builds VDL.buildView every time the same
> component structure (same graph). 
> 
> In this case compute myfaces some informations again and again but every
> time with same results. For example, creating of unique ids is very
> expensive:
> 
> FaceletContext.generateUniqueId
> FaceletCompositionContext.generateUniqueComponentId
> UniqueIdVendor.createUniqueId
> 
> in ComponentTagHandlerDelegate.apply(FaceletContext, UIComponent)
> 
> Can we cache this ids at ComponentTagHandlerDelegate in production in
> case of view without build time modifications ? This is similar to [1].
> 
> Same situation with @ResourceDependency annotations: ApplicationImpl.
> _handleAttachedResourceDependencyAnnotations computes the same result
> with every request/response.
> 
> Others ideas what can be cached?
> 
> Regards,
> 
> Kočičák
> 
> 
> [1] https://issues.apache.org/jira/browse/MYFACES-3160
> 
> 
> 
> 
> 
> 
> 
> 



Mime
View raw message