[ 
https://issues.apache.org/jira/browse/MYFACES-3435?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13223439#comment-13223439
 ] 

Leonardo Uribe commented on MYFACES-3435:
-----------------------------------------

I have checked again the patch and I founded some inconsistencies in 
FacetHashMap that were fixed in _ComponentFacetMap some time ago (implement 
fully Set interface for entrySet(), keySet() and valuesSet() ). Here is when 
delegation pattern shines. It is possible to use ArrayMap instead HashMap and 
improve performance in one step. If we use inheritance, I don't want to imagine 
the work required to fix this.

I'm still thinking we can do other improvements (adjust structures sizes, cache 
some variables in some parts, ... ) and get bigger improvements without sacrify 
the code structure. In other words, there are other parts of the code that 
generate a lot more objects that this place. 

Anyway, I splitted the patch in two and I applied it partially, adjusting the 
structure's size and replacing HashMap with ArrayMap for facets. The other part 
of the patch (MYFACES-3435-7.patch) was attached here if in the future we came 
back to this point again. I'll let this issue open, but for now that's all I'm 
going to do for the next release cycle.
                
> [perf] _DeltaList: use ArrayList as parent
> ------------------------------------------
>
>                 Key: MYFACES-3435
>                 URL: https://issues.apache.org/jira/browse/MYFACES-3435
>             Project: MyFaces Core
>          Issue Type: Improvement
>          Components: General
>    Affects Versions: 2.0.12-SNAPSHOT, 2.1.6-SNAPSHOT
>            Reporter: Martin Kočí
>            Assignee: Martin Kočí
>            Priority: Minor
>         Attachments: MYFACES-3435-2.patch, MYFACES-3435-7.patch, 
> MYFACES-3435.patch, _ComponentChildrenList2.java
>
>
> Two internal classes _DeltaList in API:
> 1) now use delegation pattern, but are always initialized with an ArrayList 
> instance -> use inheritance and  ArrayList as parent -> improvement in memory 
> area, reduces number of GCed object in one request/response of (_DeltaList 
> instances/2) 
> 2) initialize expected size of _DeltaList (for example, number of validators 
> per one component is perhaps never 10, use: new _DeltaList(5))
> 3) use indexes in 'for' instead of iterator (java.util.RandomAccess) ->  
> improvement in performance

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira


Reply via email to