Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
Bug 338196 - [Tree][Table] Improve tree/table performance and feedback
Summary: [Tree][Table] Improve tree/table performance and feedback
Status: RESOLVED FIXED
Alias: None
Product: RAP
Classification: RT
Component: RWT (show other bugs)
Version: 1.4   Edit
Hardware: All All
: P3 enhancement (vote)
Target Milestone: 1.5 M7   Edit
Assignee: Project Inbox CLA
QA Contact:
URL:
Whiteboard: plan-version=1.5 plan-theme=widgets p...
Keywords:
: 313291 (view as bug list)
Depends on: 336169 336362
Blocks:
  Show dependency tree
 
Reported: 2011-02-25 05:51 EST by Tim Buschtoens CLA
Modified: 2013-01-28 04:21 EST (History)
2 users (show)

See Also:


Attachments
IE8 Table profiling (15.63 KB, image/png)
2012-02-23 12:01 EST, Tim Buschtoens CLA
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Tim Buschtoens CLA 2011-02-25 05:51:04 EST
The Tree implementation still has room for improvement regarding usability

I would especially like to investivgate options to improve performance for fast scrolling in big trees. Cells that are not visible horizontally could not be rendered until the scrollbar-knob is dropped, a row rendering very similar items in succession could only render the differences, the scrollevent merge-behavior could be optimized.
Comment 1 Tim Buschtoens CLA 2011-06-10 06:10:20 EDT
In case of virtual tree/table the performance when scrolling really fast could be improved by sending less topItemIndex updates to the server. Currently they are sent every 400ms, but when scrolling so fast that the resolved items practically guarenteed to be no longer visible when arraving, it only slows down the rendering. The timer should be prolonged if the scroll-speed (item-delta / time) is very high.
Comment 2 Tim Buschtoens CLA 2012-02-23 11:56:04 EST
I commited several changes regarding this Bug to CVS HEAD:

* Html-elements are now re-used based on their role, so always the same element is used to render the same cell label/image/background. This saves some re-renderings.

* Instead of hiding elements with display:none, they are set back to the neutral value of their role. This is faster than setting display, and saves one dom access.

* During vertical scrolling, the bounds and a couple of other style-properties are not re-rendered since they are not changing.

* In internet explorer, innerText is now used instead of innerHTML, which is somewhat faster and does the escaping for us.

* Escaped texts are cached in TreeItem.

* IE does not attempt to render text-shadow, wich is unsupported anyway.

I did not yet address the issue of rendering virtual tables/trees, or those with a lot of columns (see previous comments).
Comment 3 Tim Buschtoens CLA 2012-02-23 12:01:03 EST
Created attachment 211515 [details]
IE8 Table profiling

By far the biggest junk remaining (ignoring virtual and vertically huge tables), is the styling of the label cells - font, color and text decoration. This is frustrating, as these values are very often identical and wouldn't have to be rendered. As a solution, the tree would have to detect the default values (this is the tricky part), and keep track which cells are unchanged from these values.
Comment 4 Ivan Furnadjiev CLA 2012-03-29 05:22:01 EDT
*** Bug 313291 has been marked as a duplicate of this bug. ***
Comment 5 Tim Buschtoens CLA 2013-01-28 04:21:16 EST
Will close as fixed for now. As mentioned in comment#3, except for special cases the remaining changes would be rather complicated and benefit IE7/8 mostly. We can open a new bug if someone asks for better performance.