Telerik blogs
Shortly after the release of Q2 2007 SP1 in October we have started re-factoring RadGridView for WinForms. Our aim was to provide our clients with a stable, performing and usable product - tasks of great importance both to our customers, and to us being the supporting party.

Last week we released the beta of RadControls for WinForms Q3 2007, which includes our newest controls, but it does not give much details on our progress with vNEXT of RadGridView. So I decided to provide you with an update of the current standing of our RadGridView for WinForms control and our future plans.

Work is going great and we have achieved immense progress in the short timeframe of just 2 months. We started with an in-depth research shortly after the release of SP1 of Q2 2007 which revealed several areas that needed our attention:
  • UI and painting improvements, based on the Telerik Presentation Framework (TPF)
  • Performance improvements in the data layer
  • Performance improvements in the data <--> UI communication
  • Stability and simpler API
In this post I will cover the first two areas and will leave the rest for another post next week.

UI and painting improvements, based on the Telerik Presentation Framework (TPF)

We revised the TPF theming approach, which was originally designed to handle many different cases, and as such was very general. This had undesired performance penalty on RadGridView. After reducing the unnecessary complexity we had to only tune up some of the features to be able to dramatically increase the UI responsiveness of the GridView.

As a result, RadGridView creates UI elements for the visible parts only, rather than for all. Obviously, this is the most optimized approach. The difficult part here was to design the underlying UI and theming mechanism in a way that UI elements are very rapidly added and removed from the visual grid, thus allowing theming to be applied. The task got even more complex when features like property value inheritance (ambient properties), and attribute and type-based StyleSheets came into place. We spent a decent amount of time profiling these features, but the results are very pleasing.

We also spent some time on the scrolling functionality, and it is now much more responsive with large amounts of records. Depending on the scenario, RadGridView is 30 to 60% percent faster based on these TPF improvements. We managed to achieve top performing UI with richness and customizability on a level that is currently not available on the market. As noted in the Beta announcement,

The version included here is the old one from Q2 SP1, but supercharged with noticeable UI improvements in response, painting, theme loading, and scrolling.

You can test these improvements right away by downloading the beta and giving it a spin.

Performance improvements in the data layer

This was the most important area and covered:
  • Memory footprint and speed
  • New grouping API and architecture
  • Intelligent update on demand of specific elements of the UI layer based on changes in the data layer.
We have spent most of the 2 months on these tasks and the results are intoxicating! The new data layer offers near "real time" refresh performance with flat data; the hierarchy mechanism has been optimized, leading to smaller memory footprint, faster preparation, etc; the rows and columns have been virtualized and UI/Data Layer Interface is now robust - there is no need for internal synchronization in various places any more. The numbers speak for themselves:
  • Refresh performance with flat data (based on the "high refresh/trader grids" performance test with 13 rows x 13 columns): 4-5ms
    (vs. 460ms in Q2 2007!)
  • Average time for loading 300,000 records of data: ~ 500ms
  • Average time for loading 300,000 records of data + grouping: ~ 800ms

I will follow up with exact performance metrics in a week or two, which will compare the old version of RadGridView with vNEXT.

Release date

We will need some additional time to complete the new grid and conduct full QA tests - probably another 3-4 weeks. We had promised that we will release the new grid with Q3 2007, but we have gathered strong momentum and prefer to finish everything in one take. I can assure you that no one at Telerik is comfortable with the delay, however we prefer to admit the truth and be honest about the delay, rather than make a compromise with quality and release a product that is not ready for market. We are confident that this is in the best interest of our customers to postpone the release of the new grid until we will have a fully tested product.

We expect the product to be ready for production by the end of January 2008 and we are willing to deliver the special version for anyone who requests it. We may provide it as a separate download in the Beta Forums, but we will not push it through our regular channels to avoid confusion which version is the official one. The idea of the special release is to provide you with a stable build you can continue your work with, rather than waiting for the all new version another couple of months.

This is the time to note that the new version will introduce breaking changes. I will cover this topic extensively in part II of the series. In short, to make the performance of the grid top notch we had to reengineer it and inevitably we had to implement some breaking changes. The API has been simplified and improved, and we did our best to keep backwards compatibility by marking sure that absolutely all properties and events which impact compatibility are tagged as obsolete. However, there are some events and properties which have been thrown out, because of design improvements. We doubt that we have many customers who are using these in their current implementation, but nevertheless, these are changes which break compatibility and cannot be released in a service pack. In light of this we want to provide you with some time to play with the product and give us your feedback prior to the official release. We are determined to make the upgrade to the new grid as smooth as possible and we need your input to achieve this.

What’s next

Next week I will give you the rest of the details on what we have been working on, namely:
  • Performance improvements in the data <--> UI communication
  • Stability and simpler API

I will also prepare some performance measures, and may be a test app that you can use to test the old and new versions yourself.

I will be happy to address any questions you may have about the new version. In case you want to see some particular performance tests, please let me know here so that I can provide them to you. We can also address any specific concerns you may have related to the new version of the GridView. Any other feedback will help us decide on the exact release date, as well as of what importance this product is to you.

Thank you!

Go to Re-engineering RadGridView for WinForms (part II)


Comments

Comments are disabled in preview mode.