ICEfaces
  1. ICEfaces
  2. ICE-2163

tree performance slows down when draggable panels are used inside tree nodes

    Details

    • Type: Improvement Improvement
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 1.6.1
    • Fix Version/s: 1.7DR#3, 1.7
    • Component/s: None
    • Labels:
      None
    • Environment:
      any

      Description

      when users want to use drag and drop in trees the performance
      is drastically slowed down, because of some javascript issues.

      looking at the firebug console shows the following reoccurring output:

      [window.stateMon] Not rebuilding [testForm:tree_2:n-root:_id221] type [Droppable]icefaces-d2d.js (line 1041)

      This error will continuosly be printed to the console. Moreover, this not only
      effects the currently running application, but also the cpu load. Other processes
      on the same machine are slowed down as a consequence.

      ICE-734 doesn't seem to fix this problem.

        Issue Links

          Activity

          Hide
          Adnan Durrani added a comment -

          ICE-2313 fixes this problem.

          Show
          Adnan Durrani added a comment - ICE-2313 fixes this problem.
          Hide
          Ken Fyten added a comment -

          The indicated pre-requisite issues will remove scalability issues related to using D&D on numerous components in a page.

          Show
          Ken Fyten added a comment - The indicated pre-requisite issues will remove scalability issues related to using D&D on numerous components in a page.
          Hide
          Adnan Durrani added a comment -

          On the Tree node expend event, all the draggable and dropable panelGroup(s) creates a Drag&Drop Java script object on the client and store them into an array and then stateMonitor iterate through to that array twice first time for draggable objects and second time for the dropable objects, to see if any of the object need to be rebuilt. The rebuild process is being forced by the component as well as its defined in the connection.onReceive() in the bridge, this method is being invoked when there is an update sent to the client. The ping and pong causing this method to be invoked on every heartbeat and stateMonitor keep iterate through the list.

          I have feeling that stateMonitor is not working appropriately for IE when there are even more then 20 Draggable objects.

          Show
          Adnan Durrani added a comment - On the Tree node expend event, all the draggable and dropable panelGroup(s) creates a Drag&Drop Java script object on the client and store them into an array and then stateMonitor iterate through to that array twice first time for draggable objects and second time for the dropable objects, to see if any of the object need to be rebuilt. The rebuild process is being forced by the component as well as its defined in the connection.onReceive() in the bridge, this method is being invoked when there is an update sent to the client. The ping and pong causing this method to be invoked on every heartbeat and stateMonitor keep iterate through the list. I have feeling that stateMonitor is not working appropriately for IE when there are even more then 20 Draggable objects.
          Hide
          Michael Thiem added a comment -

          Performance seems to be ok on Firefox. It's only on IE and seems to only be due to the Drag and Drop.
          This is a high priority issue for two of our support clients who both are facing this issue.

          Show
          Michael Thiem added a comment - Performance seems to be ok on Firefox. It's only on IE and seems to only be due to the Drag and Drop. This is a high priority issue for two of our support clients who both are facing this issue.
          Hide
          Ken Fyten added a comment -

          The reported JS logging is not responsible for a performance impact on the tree with drag and drop when not running in debug mode.

          Show
          Ken Fyten added a comment - The reported JS logging is not responsible for a performance impact on the tree with drag and drop when not running in debug mode.
          Hide
          Adnan Durrani added a comment -

          We have tested the attached demo, the log messages are informational and not a problem. The draggable panelGroup log this message when a draggable element already found in the DOM and don't need to be rebuild.

          The slow performance is inherited from the tree itself, which is known issue, so it will be fixed when tree will be fixed. In addition to that if you open the firebug it starts logging on the console which also cause slower performance and more cpu usage. As Mircea quoted that "Firebug's console will never remove the logged events unless you reload the page. This results in a pseudo-memory leak when running an application for a long time."

          Show
          Adnan Durrani added a comment - We have tested the attached demo, the log messages are informational and not a problem. The draggable panelGroup log this message when a draggable element already found in the DOM and don't need to be rebuild. The slow performance is inherited from the tree itself, which is known issue, so it will be fixed when tree will be fixed. In addition to that if you open the firebug it starts logging on the console which also cause slower performance and more cpu usage. As Mircea quoted that "Firebug's console will never remove the logged events unless you reload the page. This results in a pseudo-memory leak when running an application for a long time."
          Hide
          Michael Thiem added a comment -

          tested on tomcat 5.20 and with firefox 2.0

          Show
          Michael Thiem added a comment - tested on tomcat 5.20 and with firefox 2.0

            People

            • Assignee:
              Unassigned
              Reporter:
              Michael Thiem
            • Votes:
              1 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: