[
https://issues.apache.org/jira/browse/MYFACES-3111?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Leonardo Uribe updated MYFACES-3111:
------------------------------------
Resolution: Fixed
Fix Version/s: 2.1.0
2.0.6
Assignee: Leonardo Uribe
Status: Resolved (was: Patch Available)
I have checked and the patch is ok. Yes, it is true there is still a lot of
room from improvement. I'll keep that in mind.
> [PERF] Review UIData.saveDescendantComponentStates and
> restoreDescendantComponentStates
> ---------------------------------------------------------------------------------------
>
> Key: MYFACES-3111
> URL: https://issues.apache.org/jira/browse/MYFACES-3111
> Project: MyFaces Core
> Issue Type: Improvement
> Components: General
> Affects Versions: 2.0.6-SNAPSHOT
> Environment: myfaces core trunk
> Reporter: Martin Kočí
> Assignee: Leonardo Uribe
> Fix For: 2.0.6, 2.1.0
>
> Attachments: MYFACES-3111.patch
>
>
> In my test case, method UIData.saveDescendantComponentStates allocates ~ 310
> 000 instances during one request/response. Most of them are empty List (+
> Object []) and AbstractList$Itr
> Problems:
> 1) The current code reminds me the old state saving style from JSF 1.X - a
> big table of (mostly empty) arrays.
> 2) Using getChildren().iterator() creates new instance of AbstractList$Iter.
> 3) Saving state of transient and state saving of EditableValueHolder: I don't
> see any mention of transient in setRowIndex JavaDoc.
> Suggestions:
> ad 1) JSF 2.0 and StateHelper is Map-based. Use map here or even the
> StateHelper directly. Create EditableValueHolderState instances only and not
> empty arrays and List. The saved state for a row with non-EditableValueHolder
> children must be null and must not allocate any objects.
> ad 2) Use the old fashion way with indices; that will avoid thousand of
> unnecessary iterators instances.
> ad 3) It seems that mojarra saves per-row state for every EVH, even for
> transients.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira