RadTreeView performance

5 posts, 0 answers
  1. Lauren Nickerson
    Lauren Nickerson avatar
    52 posts
    Member since:
    Jul 2009

    Posted 12 Aug 2010 Link to this post

    Hello. I'm concerned about the performance of the RadTreeView. I created a simplistic project where I create 1001 items, one root item with 1000 sub items and the RadTreeView's size is 24.84 MB, so I thought something must be wrong because I'm just putting strings in the RadTreeViewItems, so I checked with a memory profiler, and I found out that a lot of very heavy objects are created. The ones that jump out the most are these three:

    55,308x EffectiveValueEntry[] (4.69MB)
    9,011x Rectangle (2.52MB)
    8,019x Grid (2.17MB)

    Now, this is in a simplistic problem. In our real project these numbers are much bigger (also with around 1000 items). The number of rectangles goes up to 17,000 when we display the RadTreeView and it has become a major issue for us because it uses a lot of memory. Just by displaying our tree, which is very complex, the memory usage goes up 76mb and we have two of them so that makes 152mb for both trees. We're now working in just using one tree, but 76mb is still a lot of memory of the one tree.

    Here's a video I captured while making sure the items are coming from the RadTreeView:

    http://www.screencast.com/users/CarloToribio/folders/Jing/media/88771fe2-84b6-4ad3-92c3-2a6f31bc32c6

    Let me know if there's anything we can do, and also minimizing GUI loses.

    Thanks. By the way we're using the 2009.3.1208.35 RadTreeViewItem version.

    Let me know. Thank you.
  2. Miroslav
    Admin
    Miroslav avatar
    922 posts

    Posted 17 Aug 2010 Link to this post

    Hi Lauren Nickerson,

    In the RadTreeViewItems CotnrolTemplate there are many elements that may not be needed in your case - for example the visuals of a CheckBox, RadioButton, horizontal and vertical line. They can be further decreased if you are not using any border brushes.

    The EffectiveValueEntry[] is an object that holds the local/effective values of a DependencyObject, so they should roughly equal the number of dependency objects. Their size will decrease as the application is optimized.

    9,011 rectangles means that there ~9 rectangles for each TreeViewItem. With a custom template we can probably get them down to 1 or 2;

    The best improvement in this case will be to databind the TreeView and use hierarchical virtualization. This means that only containers (TreeViewITems) for the visible items will be created and the size of the tree will not be very much dependent on the number of items.

    All the best,
    Miroslav
    the Telerik team
    Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items
  3. Lauren Nickerson
    Lauren Nickerson avatar
    52 posts
    Member since:
    Jul 2009

    Posted 17 Aug 2010 Link to this post

    Thanks for the answer.

    We were thinking about implementing our own template but we don't really want to waste time on that. We did opt for virtualization but we found a really bad problem with the scroll bar (see this forum thread) the scrollbar changes size as the items are created, so we're probably stepping away from virtualization if we don't find a solution for that too. I guess in the source code there's the template for the RadTreeViewItem, maybe I can grab that and simplify it to fit our needs and use less memory?
  4. Lauren Nickerson
    Lauren Nickerson avatar
    52 posts
    Member since:
    Jul 2009

    Posted 19 Aug 2010 Link to this post

    I'm looking for the RadTreeViewItem template so I can simplify it by removing some visuals, but I can't seem to find it in the source code. Would you mind pinpointing me to where it is?

    Thanks!
  5. Miro Miroslavov
    Admin
    Miro Miroslavov avatar
    588 posts

    Posted 20 Aug 2010 Link to this post

    Hi Lauren Nickerson,

    I'm attaching the ControlTemplates and Styles for the RadTreeView and RadTreeViewItem. You can get it and remove the visuals that you don't need.  (Just change the Style of your TreeView with one that overides the Template proeprty).
    If you need further assistance, please contact us.


    All the best,
    Miro Miroslavov
    the Telerik team
    Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items
Back to Top