Very slow performance on large datasets

4 posts, 0 answers
  1. David
    David avatar
    3 posts
    Member since:
    Sep 2012

    Posted 14 Feb 2012 Link to this post

    I have two arrays of numbers each with 2801 values in a line chart. Using a StopWatch object to time loading it takes about 900 ms to assign the values to the series using Series.SetValues(arrayofdoublevalues). This I can live with. It takes about 45 seconds to do the initial draw or to redraw on a move or when the window is brought back from being minimized and the initial draw only happens (most of the time) if I call Refresh after assigning the data.

    Is this typical behavior or is there something I can do that will speed it up?
  2. Ves
    Admin
    Ves avatar
    2879 posts

    Posted 17 Feb 2012 Link to this post

    Hello David,

    RadChart will have problems with more than 1000 items on screen. While the product was designed to be easily customizable and feature rich it does not cope well with extremely busy charts. The control is targeted for casual situations which do not require a high performance solution -- usually several hundred points would fit on a normal display but with more points the details are lost anyways. There is a trade off to make between high customization and high performance and we've gone the rich features path as it is what most of our customers are interested in.

    Here are some suggestions that should improve the performance in this case: Turn intelligent labels off. Actually, I would suggest turning the labels off altogether, as they would hardly be readable. Next step would be to combine several adjacent points into one e.g. take the first 5 (or so) values, calculate the average and add a single ChartSeriesItem using the average value.

    Best regards,
    Ves
    the Telerik team
    Sharpen your .NET Ninja skills! Attend Q1 webinar week and get a chance to win a license! Book your seat now >>
  3. UI for WinForms is Visual Studio 2017 Ready
  4. David
    David avatar
    3 posts
    Member since:
    Sep 2012

    Posted 20 Feb 2012 Link to this post

    The times I mentioned were with labels turned off. As you suggest they are entirely unintelligable anyway. Can you suggest a maximum number of items on screen so I can dynamically create a divisor for averaging? I suppose I will need to do a little bit more so I don't average away the outliers but this seems like a reasonable approach as the individual data points are not that important as long as they fall well within the expected norm.
  5. Ves
    Admin
    Ves avatar
    2879 posts

    Posted 23 Feb 2012 Link to this post

    Hi David,

    What's acceptable for one might be totally unacceptable for other. I would suggest starting with max number of points between 600 and 900 and adjusting it according to the performance you see and according to what you consider acceptable. You will have to take into account the client machine, where the application will run.

    Best regards,
    Ves
    the Telerik team
    RadControls for WinForms Q1'12 release is now live! Check out what's new or download a free trial >>
Back to Top