I wanted to share some of the performance and API improvements we've made to the DevExpress WinForms TreeList Control in our v17.1 development cycle. If you're not familiar with this product, you can think of it as a treeview and listview hybrid...The component is designed to display self-referenced hierarchies and render it as a traditional tree or a grid.
Before I begin, let me offer the following...If you're evaluating this product and would like to test it against competing products, we'd be more than happy to provide the sample project used to generate these test results. I think you'll be pleasantly surprised as to how fast our WinForms TreeList executes the functions listed below.
Though we are not finished with all the optimizations we hope to introduce this year, I want to assure you that our goal is to improve the TreeList to such a degree that it's on par with our WinForms Grid from a performance perspective.
Performance
The following table describes the performance improvements shipping inside v17.1.
Time (ms) | DevExpress TreeList v16.2 | DevExpress TreeList v17.1 | DevExpress WinForms Grid |
Sorting by one or more columns (average time) | |||
116 | 47 | 14 | |
58 | 30 | n/a | |
Filtering by simple or complex criteria (average time) | |||
46 | 31 | 12 | |
52 | 36 | n/a | |
Searching (against a single column/against all columns | |||
116/444 | 98/321 | 92/173 | |
119/457 | 100/332 | n/a | |
Loading Rows/Tree from data source (10k,100k records) | |||
36/650 | 34/466 | 5/10 | |
81/2005 | 79/1703 | n/a | |
854/minutes | 103/4182 |
API
In this release, we've updated the Tree List's API so that it is more consistent and in-line with our WinForms Grid. These changes address common data operations such as obtaining and setting cell values, selection, sorting and filtering, formatting and hit testing. Our new API also includes a number of tree-specific features including a LINQ-friendly node iterator:
.Where(node => (decimal)node["Discount"] > 0).Count();
By extending the Tree List's API, we've been able to improve the product's core functionality and expect to evolve it further in coming release cycles. For instance, the filter related API changes introduced in v17.1 allowed us to incorporate Excel-inspired Filtering and the Auto-Filter Row....and helped improve core capabilities such as the availability of predefined filters when using Excel-inspired filter dropdowns.
As always, we welcome your comments and feedback. Tell us how you're currently using our WinForms TreeList Control.