[
https://issues.apache.org/jira/browse/MYFACES-3130?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13032347#comment-13032347
]
Jan-Kees van Andel commented on MYFACES-3130:
---------------------------------------------
One comment. Since we know some of the collections where the performance gain
is substantial, I suggest to put some "instanceof ArrayList" checks in the code
and log a warning that an ArrayList is more suitable.
I know it's not strictly necessary, but at least it warns users for bad
performance.
About the concurrentmodificationexception, why not just do a list.toArray() and
then loop over that array? It might even improve performance (not tested)...
> [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