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

Martin Kočí commented on MYFACES-3130:
--------------------------------------

Patch commited in trunk 2.1. Now I'm going to implement it for rest of code 
(mostly visitTree method and some internals like 
ApplicationImpl._handleListenerForAnnotations). I minimize what profiler shows 
so if your work on some code where ArrayList is 100% sure (like 
ApplicationImpl._handleListenerForAnnotations) please change it to index-for;

RandomAccess: (a instanceof RandomAccess) check in production code is unwanted, 
but we can detect custom implementation of Component.children in initializer 
code, try to initialize new component, put one child in it and test, if 
getChildren() returns RandomAccess. I've check RichFaces and Primefaces and 
they don't use own children list. Trinidad uses ArrayList. 

Our _ComponentChildrenList does not implement RandomAccess, only delegates on 
one, I'll change it.



> [PERF] Avoid unnecessary AbstractList$Itr instances
> ---------------------------------------------------
>
>                 Key: MYFACES-3130
>                 URL: https://issues.apache.org/jira/browse/MYFACES-3130
>             Project: MyFaces Core
>          Issue Type: Improvement
>          Components: JSR-314
>         Environment: myfaces core trunk
>            Reporter: Martin Kočí
>         Attachments: MYFACES-3130-example.patch
>
>
> Similar issue: MYFACES-3129
> loop from java 5:
> for (Object object: objects)
> creates new instance of AbstractList$Itr, if objects are instance of 
> ArrayList. 
> Similar situation is with explicit .iterator() call.
> In my testcases, it is about ~ 100 000 instances per request/response. 
> Creation itself is cheap, but triggers GC lately.
> I suggest to use old index-style for (i = 0; i < childCount;   i++) if 
> possible. Are there any rawbacks of index-based iteration? 
> Children is List and as implementation detail we  know that it is instance of 
> ArrayList.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to