ICEfaces
  1. ICEfaces
  2. ICE-3300

Framework algorithm improvements in passThroughAttribute and DOMSerialization areas

    Details

    • Type: Improvement Improvement
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 1.7.1
    • Fix Version/s: 1.7.2
    • Component/s: Framework, ICE-Components
    • Labels:
      None
    • Environment:
      ICEfaces

      Description

      Rendering performance in applications is always a concern, but a clients Facelets application illustrated particularly poor rendering performance.

      https://www.icesoft.ca:4443/supportilla/show_bug.cgi?id=4903

      First notably were two methods on top of the profiling time lists. The serialize method of the DOMSerilizer class, and the renderNonBooleanAttributes method of the PassThroughAtrributeRenderer both have some questionable code. It might be justifiable but it seems very expensive.

      This bug should be used to track any changes made to the framework and components with respect to this application.

        Issue Links

          Activity

          Greg Dick created issue -
          Repository Revision Date User Message
          ICEsoft Public SVN Repository #17121 Thu Jul 10 14:40:22 MDT 2008 greg.dick ICE-3300 checked in streamlining of serialize method
          Files Changed
          Commit graph MODIFY /icefaces/trunk/icefaces/core/src/com/icesoft/faces/context/PushModeSerializer.java
          Repository Revision Date User Message
          ICEsoft Public SVN Repository #17122 Thu Jul 10 14:41:23 MDT 2008 greg.dick ICE-3300 checked in alternate implementation of renderNonBooleanAttributes method
          Files Changed
          Commit graph MODIFY /icefaces/trunk/icefaces/core/src/com/icesoft/faces/renderkit/dom_html_basic/PassThruAttributeRenderer.java
          Repository Revision Date User Message
          ICEsoft Public SVN Repository #17125 Thu Jul 10 14:50:58 MDT 2008 greg.dick ICE-3300 alternate algorithm for ancestor pruning.
          Files Changed
          Commit graph MODIFY /icefaces/branches/icefaces-1.7/icefaces/core/src/com/icesoft/faces/context/PushModeSerializer.java
          Repository Revision Date User Message
          ICEsoft Public SVN Repository #17126 Thu Jul 10 14:51:24 MDT 2008 greg.dick ICE-3300 alternate algorithm for attribute passthrough rendering
          Files Changed
          Commit graph MODIFY /icefaces/branches/icefaces-1.7/icefaces/core/src/com/icesoft/faces/renderkit/dom_html_basic/PassThruAttributeRenderer.java
          Repository Revision Date User Message
          ICEsoft Public SVN Repository #17128 Fri Jul 11 09:50:03 MDT 2008 greg.dick ICE-3300 undo last changes
          Files Changed
          Commit graph MODIFY /icefaces/branches/icefaces-1.7/icefaces/core/src/com/icesoft/faces/renderkit/dom_html_basic/PassThruAttributeRenderer.java
          Repository Revision Date User Message
          ICEsoft Public SVN Repository #17129 Fri Jul 11 09:53:43 MDT 2008 greg.dick ICE-3300 undo last changes
          Files Changed
          Commit graph MODIFY /icefaces/branches/icefaces-1.7/icefaces/core/src/com/icesoft/faces/context/PushModeSerializer.java
          Ken Fyten made changes -
          Field Original Value New Value
          Assignee Priority P1
          Assignee Greg Dick [ greg.dick ]
          Hide
          Greg Dick added a comment -

          I've attached two files that have improvements to their short term algorithms. They appear to help, offering about a 12.5% improvement in the customer testcase, but the changes also appear to have regressions in some unidentified form.

          Show
          Greg Dick added a comment - I've attached two files that have improvements to their short term algorithms. They appear to help, offering about a 12.5% improvement in the customer testcase, but the changes also appear to have regressions in some unidentified form.
          Hide
          Greg Dick added a comment -

          The renderer implementation now avoids removing attributes from the targetNode since, in a clean DOM rendering situation, there wont be any pre-existing attributes.

          Show
          Greg Dick added a comment - The renderer implementation now avoids removing attributes from the targetNode since, in a clean DOM rendering situation, there wont be any pre-existing attributes.
          Greg Dick made changes -
          Attachment PassThruAttributeRenderer.java [ 11118 ]
          Hide
          Greg Dick added a comment -

          The serialize method in this method attempts to reduce the extreme number of calls to isAncestor for large Node counts.

          Show
          Greg Dick added a comment - The serialize method in this method attempts to reduce the extreme number of calls to isAncestor for large Node counts.
          Greg Dick made changes -
          Attachment PushModeSerializer.java [ 11119 ]
          Hide
          Greg Dick added a comment -

          Following issues were seen with comp-showcase ( latest 1.7 branch ) on
          tomcat6.0 & tomcat5 (FF2 & IE7)

          • Autocomplete not working (most of the times no list is shown)
          • Menubar not working reliably (sometimes does not show child menus
            on mouse over or even onclick)
          • Drag and Drop not working reliably (sometimes the item is not
            getting added to the cart after drag and drop also, sticky drag
            and drop)
          • Panel popup not working reliable ( not able to drag it sometimes)
          Show
          Greg Dick added a comment - Following issues were seen with comp-showcase ( latest 1.7 branch ) on tomcat6.0 & tomcat5 (FF2 & IE7) Autocomplete not working (most of the times no list is shown) Menubar not working reliably (sometimes does not show child menus on mouse over or even onclick) Drag and Drop not working reliably (sometimes the item is not getting added to the cart after drag and drop also, sticky drag and drop) Panel popup not working reliable ( not able to drag it sometimes)
          Ken Fyten made changes -
          Assignee Greg Dick [ greg.dick ] Adnan Durrani [ adnan.durrani ]
          Repository Revision Date User Message
          ICEsoft Public SVN Repository #17153 Mon Jul 14 12:15:50 MDT 2008 ted.goddard keep track of duplicates in pruned ancestors (ICE-3300)
          Files Changed
          Commit graph MODIFY /icefaces/trunk/icefaces/core/src/com/icesoft/faces/context/PushModeSerializer.java
          Repository Revision Date User Message
          ICEsoft Public SVN Repository #17165 Tue Jul 15 14:11:35 MDT 2008 ted.goddard keep track of duplicates in pruned ancestors (ICE-3300)
          Files Changed
          Commit graph MODIFY /icefaces/branches/icefaces-1.7/icefaces/core/src/com/icesoft/faces/context/PushModeSerializer.java
          Repository Revision Date User Message
          ICEsoft Public SVN Repository #17166 Tue Jul 15 14:12:13 MDT 2008 ted.goddard alternate implementation of renderNonBooleanAttributes (ICE-3300)
          Files Changed
          Commit graph MODIFY /icefaces/branches/icefaces-1.7/icefaces/core/src/com/icesoft/faces/renderkit/dom_html_basic/PassThruAttributeRenderer.java
          Repository Revision Date User Message
          ICEsoft Public SVN Repository #17168 Tue Jul 15 17:18:06 MDT 2008 ted.goddard keep track of duplicates in pruned ancestors (ICE-3300)
          Files Changed
          Commit graph MODIFY /icefaces/branches/icefaces-1.7.1/icefaces/core/src/com/icesoft/faces/context/PushModeSerializer.java
          Repository Revision Date User Message
          ICEsoft Public SVN Repository #17169 Tue Jul 15 17:18:16 MDT 2008 ted.goddard alternate implementation of renderNonBooleanAttributes (ICE-3300)
          Files Changed
          Commit graph MODIFY /icefaces/branches/icefaces-1.7.1/icefaces/core/src/com/icesoft/faces/renderkit/dom_html_basic/PassThruAttributeRenderer.java
          Ken Fyten made changes -
          Summary Rendering performance in ICEfaces framework is poor Optimize rendering performance
          Fix Version/s 1.7.2 [ 10130 ]
          Security Private [ 10001 ]
          Assignee Adnan Durrani [ adnan.durrani ] Ted Goddard [ ted.goddard ]
          Ken Fyten made changes -
          Summary Optimize rendering performance Rendering performance improvements
          Issue Type Bug [ 1 ] Improvement [ 4 ]
          Hide
          Ken Fyten added a comment -

          Also see related fixes in ICE-3322.

          Show
          Ken Fyten added a comment - Also see related fixes in ICE-3322.
          Ken Fyten made changes -
          Link This issue depends on ICE-3322 [ ICE-3322 ]
          Greg Dick made changes -
          Summary Rendering performance improvements Framework alorithm improvements in passThroughAttribute and DOMSerialization areas
          Hide
          Greg Dick added a comment -

          Changes have been commited correcting the reported issues with this fix.

          Show
          Greg Dick added a comment - Changes have been commited correcting the reported issues with this fix.
          Greg Dick made changes -
          Status Open [ 1 ] Resolved [ 5 ]
          Resolution Fixed [ 1 ]
          Greg Dick made changes -
          Status Resolved [ 5 ] Closed [ 6 ]
          Ken Fyten made changes -
          Resolution Fixed [ 1 ]
          Status Closed [ 6 ] Reopened [ 4 ]
          Assignee Priority P1
          Ken Fyten made changes -
          Summary Framework alorithm improvements in passThroughAttribute and DOMSerialization areas Framework algorithm improvements in passThroughAttribute and DOMSerialization areas
          Ken Fyten made changes -
          Link This issue blocks ICE-3082 [ ICE-3082 ]
          Hide
          Deryk Sinotte added a comment -

          Re-assigning to Greg for further comment or resolution.

          Show
          Deryk Sinotte added a comment - Re-assigning to Greg for further comment or resolution.
          Deryk Sinotte made changes -
          Assignee Ted Goddard [ ted.goddard ] Greg Dick [ greg.dick ]
          Hide
          Greg Dick added a comment -

          The serialize method no longer show up on the top of the profiling lists, and for the clients application in question, this results in a large reduction in the number of method calls. This doesn't necessarily result in a large realtime improvement (roughly 10% in the app in question, eg. 1/10's of seconds on my development machine) but the change will definitely effect scalability in this type of application with large, changing, data sets.

          Much more improvement in rendering speed occurs with changes to the pass through attribute rendering http://jira.icefaces.org/browse/ICE-3346

          Show
          Greg Dick added a comment - The serialize method no longer show up on the top of the profiling lists, and for the clients application in question, this results in a large reduction in the number of method calls. This doesn't necessarily result in a large realtime improvement (roughly 10% in the app in question, eg. 1/10's of seconds on my development machine) but the change will definitely effect scalability in this type of application with large, changing, data sets. Much more improvement in rendering speed occurs with changes to the pass through attribute rendering http://jira.icefaces.org/browse/ICE-3346
          Greg Dick made changes -
          Status Reopened [ 4 ] Resolved [ 5 ]
          Resolution Fixed [ 1 ]
          Ken Fyten made changes -
          Fix Version/s 1.7.2RC1 [ 10140 ]
          Fix Version/s 1.7.2 [ 10130 ]
          Ken Fyten made changes -
          Fix Version/s 1.7.2 [ 10130 ]
          Fix Version/s 1.7.2RC1 [ 10140 ]
          Ken Fyten made changes -
          Status Resolved [ 5 ] Closed [ 6 ]
          Assignee Greg Dick [ greg.dick ]

            People

            • Assignee:
              Unassigned
              Reporter:
              Greg Dick
            • Votes:
              2 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: