TreeListView Peformance Issue

38 posts, 0 answers
  1. Minwei
    Minwei avatar
    31 posts
    Member since:
    Jul 2010

    Posted 21 Jan 2011 Link to this post

    We occured a performance problem when developing.

    The speed of expanding the child is getting slower and shower with the increase of columns.

    We now have about 50 columns to display. It is very slow.
    Could you help me to improve the performance?

    Another question:
    If the first item is expanding, it takes 1 seconds.
    If the second item is expanding, it takes 1.5 seconds( with the first item expanded)
    If the thrid item is expanding, it takes 2 seconds (with first two items expanded)

    That is to say, more expanded items, lower performance.

    Is there any advice?

    Thanks
  2. Minwei
    Minwei avatar
    31 posts
    Member since:
    Jul 2010

    Posted 21 Jan 2011 Link to this post

    Any idea?
  3. DevCraft banner
  4. Veselin Vasilev
    Admin
    Veselin Vasilev avatar
    2992 posts

    Posted 26 Jan 2011 Link to this post

    Hi Minwei,

    We have a similar issue logged in our public issue tracking system. You can track its progress here.
    In addition, you can check the performance troubleshooting article. It is for RadGridView, but everything applies to RadTreeListView as well.

    Kind regards,
    Veselin Vasilev
    the Telerik team
    Let us know about your Windows Phone 7 application built with RadControls and we will help you promote it. Learn more>>
  5. Alexey
    Alexey avatar
    14 posts
    Member since:
    May 2009

    Posted 29 Mar 2011 Link to this post

    I am also faced with such problem. To long expanded/collapsed rows. Any progress?
  6. Vlad
    Admin
    Vlad avatar
    11100 posts

    Posted 29 Mar 2011 Link to this post

    Hi,

     What's your treelist version? 

    Best wishes,
    Vlad
    the Telerik team
  7. Alexey
    Alexey avatar
    14 posts
    Member since:
    May 2009

    Posted 29 Mar 2011 Link to this post

    2010.3.1314.1040
  8. Ivano
    Ivano avatar
    39 posts
    Member since:
    Feb 2009

    Posted 13 Jul 2011 Link to this post

    Hi

    Still slow in version 2011.1.0419.1040.
    Any news?

    Sincerely


  9. Vlad
    Admin
    Vlad avatar
    11100 posts

    Posted 18 Jul 2011 Link to this post

    Hello,

     The original post in this thread is related to many columns (horizontal virtualization) performance which was resolved in Q1 2011 since we rewrote the entire horizontal virtualization for both treelist and grid - you can check our 1000 columns demo here:
    http://demos.telerik.com/silverlight/#GridView/UIVirtualization

    All the best,
    Vlad
    the Telerik team

    Register for the Q2 2011 What's New Webinar Week. Mark your calendar for the week starting July 18th and book your seat for a walk through of all the exciting stuff we will ship with the new release!

  10. Konstantin
    Konstantin avatar
    16 posts
    Member since:
    Oct 2010

    Posted 28 Jul 2011 Link to this post

    I have same issue with expanding rows even if I use RowVirtualization.
  11. Vlad
    Admin
    Vlad avatar
    11100 posts

    Posted 28 Jul 2011 Link to this post

    Hello Konstantin,

     I've just replied to your post here.

    Best wishes,
    Vlad
    the Telerik team

    Register for the Q2 2011 What's New Webinar Week. Mark your calendar for the week starting July 18th and book your seat for a walk through of all the exciting stuff we will ship with the new release!

  12. Konstantin
    Konstantin avatar
    16 posts
    Member since:
    Oct 2010

    Posted 29 Jul 2011 Link to this post

    Q2 2011 has much better performance on expanding from internal collections point-of -view.But When I expand/collapse just one item. MeasureOverride is called for all visible items.
    In my case I have 37 rows (5 parents in two level hierarchy). on each expand/collapse MeasureOverride is called 480 times (13 visible columns), AS a result each expand/collapse takes up to 2 seconds on my Core i7.

    Is it possible to re-measure only expanded/collapsed and new visible rows?
  13. Vlad
    Admin
    Vlad avatar
    11100 posts

    Posted 03 Aug 2011 Link to this post

    Hi Konstantin,

     Indeed we have plans to introduce exactly such smart expand/collapse (measure only needed items) and we are working currently on this. In the meantime you can check our next internal build (next Monday) - we were able to add massive performance improvements for initial load, expand all and filtering.

    I'm attaching also an example application with our latest binaries (from Today) to demonstrate the component performance after latest optimization - RadTreeListView is bound to three level hierarchy of total 1 million items. 

    All the best,
    Vlad
    the Telerik team

    Explore the entire Telerik portfolio by downloading the Ultimate Collection trial package. Get now >>

  14. Konstantin
    Konstantin avatar
    16 posts
    Member since:
    Oct 2010

    Posted 03 Aug 2011 Link to this post

    I've just played with your sample code. I did following changes:
    1. In MainPage.xaml.cs (100 top items with 5 children each)
    DataContext = new ObservableCollection<MyObject>(from i in Enumerable.Range(0, 100)
                                                     select new MyObject()
                                                         {
                                                             ID = i,
                                                             Name = string.Format("Name{0}", i),
                                                             Items = new ObservableCollection<MyObject>(from j in Enumerable.Range(0, 5)
                                                                                                        select new MyObject()
                                                                                                        {
                                                                                                            ID = j,
                                                                                                            Name = string.Format("Name{0}", j),
                                                                                                        })
                                                         });
    2. MainPage.xaml (I add a lot columns)
    <telerik:RadTreeListView Margin="10" x:Name="RadTreeListView1" ItemsSource="{Binding}" Grid.Row="1"
                             AutoGenerateColumns="False" HierarchyColumnIndex="0" EnableColumnVirtualization="True" EnableRowVirtualization="True">
        <telerik:RadTreeListView.ChildTableDefinitions>
            <telerik:TreeListViewTableDefinition ItemsSource="{Binding Items}" />
        </telerik:RadTreeListView.ChildTableDefinitions>
        <telerik:RadTreeListView.Columns>
            <telerik:GridViewDataColumn DataMemberBinding="{Binding Id}"/>
            <telerik:GridViewDataColumn DataMemberBinding="{Binding Name}"/>
            <telerik:GridViewDataColumn DataMemberBinding="{Binding Name}"/>
            <telerik:GridViewDataColumn DataMemberBinding="{Binding Name}"/>
            <telerik:GridViewDataColumn DataMemberBinding="{Binding Name}"/>
            <telerik:GridViewDataColumn DataMemberBinding="{Binding Name}"/>
            <telerik:GridViewDataColumn DataMemberBinding="{Binding Name}"/>
            <telerik:GridViewDataColumn DataMemberBinding="{Binding Name}"/>
            <telerik:GridViewDataColumn DataMemberBinding="{Binding Name}"/>
            <telerik:GridViewDataColumn DataMemberBinding="{Binding Name}"/>
            <telerik:GridViewDataColumn DataMemberBinding="{Binding Name}"/>
            <telerik:GridViewDataColumn DataMemberBinding="{Binding Name}"/>
            <telerik:GridViewDataColumn DataMemberBinding="{Binding Name}"/>
            <telerik:GridViewDataColumn DataMemberBinding="{Binding Name}"/>
            <telerik:GridViewDataColumn DataMemberBinding="{Binding Name}"/>
            <telerik:GridViewDataColumn DataMemberBinding="{Binding Name}"/>
            <telerik:GridViewDataColumn DataMemberBinding="{Binding Name}"/>
            <telerik:GridViewDataColumn DataMemberBinding="{Binding Name}"/>
            <telerik:GridViewDataColumn DataMemberBinding="{Binding Name}"/>
        </telerik:RadTreeListView.Columns>
    </telerik:RadTreeListView>

    Then I expand only one item, it still cause MeasureOverride for all visible rows. I attached screenshot of profiler. You could see that GridRowItem.MeasureOverride was called 38 times (it's excatly how many rows are visible).

  15. Vlad
    Admin
    Vlad avatar
    11100 posts

    Posted 03 Aug 2011 Link to this post

    Hi Konstantin,

    Measure optimization is not included in this build - we will do our best to provide it as soon as possible.

    Kind regards,
    Vlad
    the Telerik team

    Explore the entire Telerik portfolio by downloading the Ultimate Collection trial package. Get now >>

  16. Tim
    Tim avatar
    114 posts
    Member since:
    Aug 2011

    Posted 17 Sep 2011 Link to this post

    Hello Vlad,

    any progress on this topic? That would be really great as the performance is really awful!
    In fact, in our scenario it is not possible to use the control although we followed all performance guidelines for the RadGridView.
    Thanks a lot for any information! And a HUGE thanks for an update! :) Konstantin, thanks for profiling...

    Greetings and all the best,
    Tim.

  17. Vlad
    Admin
    Vlad avatar
    11100 posts

    Posted 19 Sep 2011 Link to this post

    Hi Tim,

    Expand all/collapse all, filtering. etc. optimization will be part of our upcoming official Q2 2011 SP1 this week. We are still working on single item expand/collapse performance - most probably this will be added for our Q3 2011 (middle of November).

    Kind regards,
    Vlad
    the Telerik team

    Explore the entire Telerik portfolio by downloading the Ultimate Collection trial package. Get it now >>

  18. Tim
    Tim avatar
    114 posts
    Member since:
    Aug 2011

    Posted 19 Sep 2011 Link to this post

    Hi Vlad, that are good news! Thanks a lot for your feedback. Will there be also an internal build a little bit earlier - I am only asking because there is an exhibition this week! ;) Thanks again, Tim.
  19. Hristo
    Admin
    Hristo avatar
    408 posts

    Posted 19 Sep 2011 Link to this post

    Hi Tim,

    We are in the process of preparing our Q2 2011 SP1 which is expected in a couple of days. No internal builds will be available until we ship the service pack.

    Kind regards,
    Hristo
    the Telerik team

    Explore the entire Telerik portfolio by downloading the Ultimate Collection trial package. Get it now >>

  20. Marcos Sampaio
    Marcos Sampaio avatar
    4 posts
    Member since:
    Apr 2010

    Posted 08 Dec 2011 Link to this post

    Hi,

    I'm using version 2011.3.1116.1040 of the TreeListView and I still have the same performance issue. I read all the topics about performance of GridView and nothing.

    Look like on each expand event TreeListView loads ALL rows again. I have more than 15k data and after deploy I could get 30-40k. Yes I already tried to load on demand and nothing. The most columns I have the worst is performance and in my case the number of rows isn't variable, columns are. I have the same app on a older version of TreeListView (2010.2.812.1040) and it doenst have the same issue. I can't rollback cuz I use lots of new features.

    Plz, help me.

    Ty,
    Marco.
  21. Tony
    Tony  avatar
    9 posts
    Member since:
    Feb 2011

    Posted 11 Mar 2012 Link to this post

    Hi,


    We're also experiencing this issue, with version 2011.3.1220.1050 of the Telerik controls. It takes 1-2 seconds to expand or collapse a row in the TreeListView. This is with around 25 top-level rows, and 2-3 sub-rows below each top-level row. Our grid has roughly 25 columns.

    We see a CPU spike while this is happening. The VS profiler shows that 82% of the CPU time is being spent (inclusively) in Telerik.Windows.Controls.GridView.GridViewScrollViewer.MeasureOverride.

    We tried setting the AutoLoadHierarchy and Enable{Column,Row}Virtualization properties, but this didn't significantly improve things. Is there any other way to improve the performance?


    Thanks.
  22. Vlad
    Admin
    Vlad avatar
    11100 posts

    Posted 12 Mar 2012 Link to this post

    Hi,

     How many cells you have visible in the treelist view port? Generally this component will recreate all rows during expand collapse due to the nature of the hierarchical collection used internally. Please consider RadGridView and/or RadTreeView if you do not need hierarchical sorting and/or filtering.

    Kind regards,
    Vlad
    the Telerik team
    Sharpen your .NET Ninja skills! Attend Q1 webinar week and get a chance to win a license! Book your seat now >>
  23. Konstantin
    Konstantin avatar
    16 posts
    Member since:
    Oct 2010

    Posted 12 Mar 2012 Link to this post

    I still have the same issue. treelist View Port has 30 rows and 12 columns. In average only 5 rows are exanded collapsed, but each time TreeListView does MeasureOverrride for all 30*12 columns. Instead of 5*12.
  24. Tony
    Tony  avatar
    9 posts
    Member since:
    Feb 2011

    Posted 12 Mar 2012 Link to this post

    Hi Vlad,


    Thanks for your reply. I just checked - I have 12 rows * 21 columns visible, so 252 cells.

    We don't need hierarchical sorting or filtering. We need sorting, but it is OK if the sorting only happens at the top level.

    What we do need is to be able to view both the top-level items and the sub-items in a grid, with the sub-items hidden until the user chooses to view them. Is it possible to achieve this with the TreeView or GridView?

    I've attached a screenshot of how it looks now.


    Thanks.
  25. Vlad
    Admin
    Vlad avatar
    11100 posts

    Posted 13 Mar 2012 Link to this post

    Hello Tony,

    I've made custom treelist like component based on RadGridVew to illustrate you how to achieve your goal. Please check the attached project for reference!

    What I've made actually is:
     - custom expand column with logic for indentation and expand/collapse
     - since I'm using IsExpanded GridViewRow property (associated normally with hierarchy) to persists the expanded state of rows automatically (however this is not normal hierarchy) I've removed the so called "hierarchy presenter" from the row template. You can check the new row template/style in application resources
    - in RowIsExpandedChanged event handler of the grid I've placed my custom logic for expand/collapse which is actually add/remove items in the main collection bound to the grid.

    All the best,
    Vlad
    the Telerik team
    Sharpen your .NET Ninja skills! Attend Q1 webinar week and get a chance to win a license! Book your seat now >>
  26. Tony
    Tony  avatar
    9 posts
    Member since:
    Feb 2011

    Posted 13 Mar 2012 Link to this post

    Hi Vlad,

    Thank you! This example looks good. We'll try it out and let you know if we run into any issues with it.

    Thanks again.
  27. Jatinder
    Jatinder avatar
    12 posts
    Member since:
    Oct 2011

    Posted 20 Mar 2012 Link to this post

    Hi Vlad 

    I am having the same issues with really bad performance. 

    Both scrolling horizontally and with expanding rows.

    I have 20 columns and a mere 50 rows in my test application. With real data i expect the same columns but with maybe 100-300 rows.

    I am using latest internal binaries. I am using no converters, no style selectors (i am using column groups but even removing those dont help).... so all in all a very vanilla test.

    My horizontal scrolling is slow and choppy with just 25 columns

    My Expanding rows is dreadful almost like a 1-2 seconds to expand!!!

    Looking at the concerns before this post with measureoveride being called for each cell and row I am not sure what i should be doing to fix the performance?? Apart from like your previous post which to stop using the treelist and try to hack into the gridview to make my scenario work?

    As for my use cases - i dont need any filtering, sorting.

    Just expanding rows, drag and dropping rows, cell editing, column groups

    Please help. Since this is an old thread - ill post all of the above in a new thread to get visibility.

  28. Vlad
    Admin
    Vlad avatar
    11100 posts

    Posted 20 Mar 2012 Link to this post

    Hello,

     I can only suggest you to consider my recently attached application if you do not need hierarchical sorting and/or filtering. 

    All the best,
    Vlad
    the Telerik team
    Sharpen your .NET Ninja skills! Attend Q1 webinar week and get a chance to win a license! Book your seat now >>
  29. AKROS
    AKROS avatar
    68 posts
    Member since:
    Oct 2011

    Posted 21 Mar 2012 Link to this post

    Please Telerik, improve h-scroll and item expanding performance for the next release.
    We all really need this !!!!
  30. Tim
    Tim avatar
    114 posts
    Member since:
    Aug 2011

    Posted 21 Mar 2012 Link to this post

    Yes telerik! That would be really great! Please, a little bit performance! ;)
  31. Harish
    Harish avatar
    8 posts
    Member since:
    Apr 2012

    Posted 26 Apr 2012 Link to this post

    I was looking for similar feature just wanted to know how to achieve grouping freature in this.
Back to Top
DevCraft banner