ICEfaces
  1. ICEfaces
  2. ICE-11155

Performance analysis of radioButton and checkboxButton in dataTable and ui:repeat

    Details

    • Type: Improvement Improvement
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 4.0, EE-4.1.0.GA
    • Fix Version/s: 4.2.BETA, 4.2
    • Component/s: ACE-Components
    • Labels:
      None
    • Environment:
      jsf2 virtualVM, Google Chrome profiler
    • Assignee Priority:
      P2

      Description

      both checkboxButton and radioButton have 4 script tags.
      one for init, one for renderRest and the same script for onfocus and onhover.

      Decided to look at this in a vm profiler (used virtualVM) and the js profiler (used Google Chrome). Attaching the screenshots for these.

      Currently showcase has buttonGroup examples which show the buttons in columns of a dataTable as well as in rows for ui:repeat.
      these examples (now) show the ability to change the number of rows. Initially the number of rows is set to 10, but you can increase to 100, 500 and 1000. These screenshots show the results of 1000 for virtual-vm and the js console shows the example for by row (using ui:repeat) as it doesn't use the dataTable which may also show some performance lag.
      for example, the by row example is at showcase (myIP):-

      http://10.18.39.137:8080/showcase/showcase.jsf?grp=ace:buttonGroup&exp=Group%20In%20Row

      ALSO...if js is the issue--js could only toggle off the previously selected button instead of all the other buttons... (500 rows in dataTable takes about 5 seconds but only has 2 radioButtons and 2 checkboxButtons per row). 500 rows in row example takes about 8seconds but has 3 radioButtons and 3 checkboxButtons per row.
       
      1. buttonGroupByRow 1000 rows.png
        820 kB
      2. non-optimized.png
        271 kB
      3. optimized.png
        277 kB
      4. profiling js.png
        502 kB
      5. Screen Shot showcase buttonGroup 1000 rows CPU Column.png
        537 kB

        Activity

        Repository Revision Date User Message
        ICEsoft Public SVN Repository #49633 Tue Dec 06 17:07:16 MST 2016 art.zambrano ICE-9500, ICE-11155 added inline documentation regarding lazy registry, to avoid confusion
        Files Changed
        Commit graph MODIFY /icefaces4/trunk/icefaces/ace/component/resources/icefaces.ace/core/core.js
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #49449 Thu Nov 03 08:15:42 MDT 2016 mircea.toma ICE-11155 Optimized imports.
        Files Changed
        Commit graph MODIFY /icefaces4/trunk/icefaces/ace/component/src/org/icefaces/ace/component/radiobuttons/RadioButtonsRenderer.java
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #49448 Thu Nov 03 06:57:50 MDT 2016 mircea.toma ICE-11155 Restore RadioButtonsRenderer.renderResetSettings method to properly invoke the ice.ace.radionbuttons.clear function for multiple selection (instead of relying on the inherited method meant for RadioButton).
        Files Changed
        Commit graph MODIFY /icefaces4/trunk/icefaces/ace/component/src/org/icefaces/ace/component/radiobuttons/RadioButtonsRenderer.java
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #49434 Mon Oct 31 15:40:31 MDT 2016 mircea.toma ICE-11155 Avoid using inherited RadioButtonRenderer.getConvertedValue method since the value is always cast to a boolean.
        Files Changed
        Commit graph MODIFY /icefaces4/trunk/icefaces/ace/component/src/org/icefaces/ace/component/radiobuttons/RadioButtonsRenderer.java
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #49433 Mon Oct 31 15:21:42 MDT 2016 mircea.toma ICE-11155 Add ice.ace.radiobutton.register to be used by the lazy loading of the radio button. Modify RadioButtonsRenderer to replicate what RadioButtonRenderer is doing.
        Files Changed
        Commit graph MODIFY /icefaces4/trunk/icefaces/ace/component/src/org/icefaces/ace/component/radiobutton/RadioButtonRenderer.java
        Commit graph MODIFY /icefaces4/trunk/icefaces/ace/component/src/org/icefaces/ace/component/radiobuttons/RadioButtonsRenderer.java
        Commit graph MODIFY /icefaces4/trunk/icefaces/ace/component/resources/icefaces.ace/radiobutton/radiobutton.js
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #49432 Mon Oct 31 15:18:49 MDT 2016 mircea.toma ICE-11155 Modify CheckboxButtonsRenderer to replicate what CheckboxButtonRenderer is doing.
        Files Changed
        Commit graph MODIFY /icefaces4/trunk/icefaces/ace/component/src/org/icefaces/ace/component/checkboxbuttons/CheckboxButtonsRenderer.java
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #49431 Mon Oct 31 15:06:17 MDT 2016 mircea.toma ICE-11155 Fixed ice.ace.registerLazyComponent to return the widget reference when just created.
        Files Changed
        Commit graph MODIFY /icefaces4/trunk/icefaces/ace/component/resources/icefaces.ace/core/core.js
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #49430 Mon Oct 31 15:05:13 MDT 2016 mircea.toma ICE-11155 Remove debugging code.
        Files Changed
        Commit graph MODIFY /icefaces4/trunk/icefaces/ace/component/resources/icefaces.ace/checkboxbutton/checkboxbutton.js
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #49403 Tue Oct 25 05:16:54 MDT 2016 mircea.toma ICE-11155 Register checkboxes or cleanup callbacks only once.
        Files Changed
        Commit graph MODIFY /icefaces4/trunk/icefaces/ace/component/resources/icefaces.ace/checkboxbutton/checkboxbutton.js
        Commit graph MODIFY /icefaces4/trunk/icefaces/ace/component/resources/icefaces.ace/core/core.js
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #49402 Mon Oct 24 16:17:08 MDT 2016 mircea.toma ICE-11155 Cleanup client IDs from the registered checkbox map when the components are removed from DOM.
        Files Changed
        Commit graph MODIFY /icefaces4/trunk/icefaces/ace/component/resources/icefaces.ace/checkboxbutton/checkboxbutton.js
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #49395 Mon Oct 24 14:50:34 MDT 2016 mircea.toma ICE-11155 Save initialization code in 'data-init' to be used in multiple places when widget needs to be lazy loaded. Factored out ice.ace.registerLazyComponent and ice.ace.evalInit utility functions to minimize rendered markup. Use JavaScriptRunner to render inline code to improve performance.
        Files Changed
        Commit graph MODIFY /icefaces4/trunk/icefaces/ace/component/src/org/icefaces/ace/component/checkboxbuttons/CheckboxButtonsRenderer.java
        Commit graph MODIFY /icefaces4/trunk/icefaces/ace/component/resources/icefaces.ace/core/core.js
        Commit graph MODIFY /icefaces4/trunk/icefaces/ace/component/src/org/icefaces/ace/component/checkboxbutton/CheckboxButtonRenderer.java

          People

          • Assignee:
            Mircea Toma
            Reporter:
            Judy Guglielmin
          • Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: