myfaces-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Leonardo Uribe (JIRA)" <>
Subject [jira] [Commented] (MYFACES-3144) [PERF] Cache renderer in UIComponentBase
Date Fri, 17 Jun 2011 16:28:47 GMT


Leonardo Uribe commented on MYFACES-3144:

I think there is one alternative to do this. To retrieve a renderer we need three params:

1. renderKitId
2. family
3. rendererType

family and rendererType does not change, but renderKitId could change. So, why don't save
on a transient field the latest renderKitId used to derive the renderer? Then, when getRenderer()
is called we just compare that field against the current one and if are equals we can return
the cached instance, otherwise recalculate it. 

But anyway it is questionable if we can gain something with this strategy, because in practice
we replace a simple comparison between two strings + an additional field on every component
against two lookups over a map. At first view, let the code "as is" looks good, so only if
we can gain something it is worth to do it.

> [PERF] Cache renderer in UIComponentBase
> ----------------------------------------
>                 Key: MYFACES-3144
>                 URL:
>             Project: MyFaces Core
>          Issue Type: New Feature
>          Components: General
>    Affects Versions: 2.1.0-SNAPSHOT
>         Environment: myfaces core trunk
>            Reporter: Martin Kočí
>            Assignee: Martin Kočí
>         Attachments: MYFACES-3144.patch
> UIComponentBase uses getRenderer(): Renderer in five methods:
> 1) decode
> 2) encodeBegin
> 3) encodeChildren
> 4) encodeEnd
> 50 getClientId
> getting the renderer is not cheap if you have thousands component in view. 
> Cache renderer instance in UIComponentBase (Trinidad UIXComponentBase does it already)

This message is automatically generated by JIRA.
For more information on JIRA, see:


View raw message