You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by Apache Wiki <wi...@apache.org> on 2010/04/06 10:20:25 UTC

[Myfaces Wiki] Update of "GSoC2010_StateSavingPerformanceImprovements" by Marius Petoi

Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Myfaces Wiki" for change notification.

The "GSoC2010_StateSavingPerformanceImprovements" page has been changed by Marius Petoi.
http://wiki.apache.org/myfaces/GSoC2010_StateSavingPerformanceImprovements

--------------------------------------------------

New page:
= MyFaces2 State Saving Performance Improvements =;

Student: Marius PETOI (petoi_marius AT yahoo DOT com, marius.petoi AT codebeat DOT ro) 
Organization : Apache Software Foundation 
Mentor : Martin MARINSCHEK < martin.marinschek AT apache DOT org > 

== Abstract ==;

This project’s aim is to study the current state saving performance of MyFaces 2.0 and to find where this could be improved and the means by which it can be done. 

== Description ==;

In JSF 2.0 there is the possibility to partially save the state of the page in the ExternalContext. This means that at the first request the entire state is saved, but afterwards only the differences from this are saved. MyFaces2 introduces the “StateManagementStrategy”, which is an interface for strategies used for saving and respectively loading the view. The default MyFaces strategy implemented so far, upon saving the view checks whether there has been a previously saved view. If so, it saves just the differences between the old state and the new, actual state. If not, the entire state is saved in the external context request map.
At the moment, the saved state contains the component tree together with properties for each component (a list of its children and facets, together with the list of listeners, the behaviours map, etc). Every component is responsible for creating its own “state” object, which is afterwards included in the parent’s state object. In the end, the “state” of the UIViewRoot and the tree of components is saved in the ExternalContext.
Upon restore, the UIViewRoot is constructed using the information stored in the ExternalContext.
This project is intended to take a deeper look into what exactly is saved at the moment. The saved state should be analyzed and see whether anything can be skipped. For this, memory profiling should be done and see which part of the saved state occupies the most memory. Afterwards, we should see how much of this is really used and what can be dismissed.
For each component type, we should see whether the “saveState” and “loadState” methods can be improved, reducing the amount of information saved. A good example of this is the table component, which at the moment does not handle partial view state saving at all.
In the end, after all the improvements will have been implemented, the memory profiling should be done again and see how much the gain was.

== Criteria ==;

=== Meritocracy ===;
This project will follow the guidelines of the Apache Foundation. 

=== Community ===;
As this involves the core of MyFaces, every change will have a big impact on the community, on all the component sets using the MyFaces implementation. Therefore, every change that we decide to make must be carefully thought.

== Schedule ==;

=== April 27 - May 3 ===;
Study state saving in the JSF implementation from Oracle, Mojarra.
Reading documentation and studying code.