ICEfaces
  1. ICEfaces
  2. ICE-11516

Performance Issues before the 4.3 P03 Release

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: EE-4.3.0.GA_P03
    • Component/s: Framework
    • Labels:
      None
    • Environment:
      Any

      Description

      There's a slight but noticeable performance issue with ajax requests in the 4.3 trunk after the 4.3 P02 release. Some ajax requests are taking about 600 ms on average (plus/minus 200 ms) with the head revision, while in the P02 release they take only about 150 ms on average (plus/minus 50 ms).

      An easy way to appreciate this performance issue is to deploy the showcase app locally, using the head revision, and to open the online showcase on another tab, and compare them side by side (http://icefaces-showcase.icesoft.org/showcase.jsf). A couple of demos where the increased delays can be easily appreciated are the ace:autoCompleteEntry > Select Items demo, after typing or selecting values, and the ace:selectMenu demos, after selecting values. However, the slower performance can be felt in general with any ajax request. Things feel less "immediate", in general.

      Commits related to ICE-11502 seem to be the cause of this issue. Revision 53249 is the last revision that doesn't show this performance issue. After that, revisions 53267 through 53281 don't compile, because of a missing method. Then, at revision 53300 that method was re-introduced, and the performance issue can be seen there. Most of the commits in between are related to ICE-11502.

      This issue is present whether or not the 'javax.faces.CLIENT_WINDOW_MODE' context parameter is declared or not (and set to 'url') in web.xml.

      This issue is not present on the EE 3.3 maintenance branch (with or without the 'javax.faces.CLIENT_WINDOW_MODE' context parameter).

        Activity

        Hide
        Mircea Toma added a comment - - edited

        The performance issue was introduced by commit #53300 when WindowELResolver was modified to invoke WindowScopeManager.lookupWindowScope on a freshly instantiated ICEfacesContext decorator for FacesContextImpl.
        ICEfacesContext extends FacesContext to modify some of its basic behaviour and thus help implementing URL based window tracking. Unfortunately every time ICEfacesContext is instantiated FacesContext's no-parameter constructor is also invoked, which in turn tries to programmatically get the stack trace, a processing intensive task.

        The applied fix avoids to decorate FacesContext (with new ICEfacesContext instances) in WindowELResolver, instead ICEfacesContext which is normally created by ICEFacesContextFactory at the beginning of the JSF lifecycle will save itself into ELContext to make itself available to WindowELResolver.

        Show
        Mircea Toma added a comment - - edited The performance issue was introduced by commit #53300 when WindowELResolver was modified to invoke WindowScopeManager.lookupWindowScope on a freshly instantiated ICEfacesContext decorator for FacesContextImpl . ICEfacesContext extends FacesContext to modify some of its basic behaviour and thus help implementing URL based window tracking. Unfortunately every time ICEfacesContext is instantiated FacesContext 's no-parameter constructor is also invoked, which in turn tries to programmatically get the stack trace, a processing intensive task. The applied fix avoids to decorate FacesContext (with new ICEfacesContext instances) in WindowELResolver , instead ICEfacesContext which is normally created by ICEFacesContextFactory at the beginning of the JSF lifecycle will save itself into ELContext to make itself available to WindowELResolver .

          People

          • Assignee:
            Mircea Toma
            Reporter:
            Arturo Zambrano
          • Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: