We are using DevExpress wpf grid strictly with MVVM bindings .. We have about 60000 bound in the grid, and we receive about 800 to 1000 updates per second..
By default they are grouped to three levels, so we can see the group and total summaries getting updated, but the performance is poor on sorting , searching or grouping.. CPU is going to about 20 to 25%..
Clearly that is a problem, we want the UI to be more responsive and explore other options to keep it lean.. We have experimented using the realtimesource as well as observablecollection.
What are your recommendations to improve the performance.. should we explore using the server mode ? I have read about using Cell/Column templates in optimal mode as well. Could you please shed some light on that as well.. The grid has about 20 columns, and most of them are formatted such that they are in green when positive and red in negative, both at row, group and total level.
Interested to learn more about server mode, lazy loading behavior..
Server Mode sources allow you to load data on demand and execute group, sort, and filter operations on the server. However, this functionality does not go well with frequent updates. To process frequently updated data, we recommend loading all records to the client. The Frequent Update Performance Enhancement article describes how to configure GridControl to recalculate summaries faster and how to use the ChunkList collection that provides better performance when executing the IndexOf, Insert and Remove operations.
Note that in some scenarios, it is more efficient to modify data records in bulks instead of processing every update individually. The Performing Multiple Data Updates article describes how to do this.
P.S. As for optimized templates, they are enabled by default. GridControl uses optimized editor and row controls unless you disable this functionality using the UseLightweightTemplates property or specify custom elements in CellTemplates. Optimized templates improve the initial loading time and allow GridControl to perform UI operations such as scrolling faster. However, in scenarios with frequently updated data, most of the time is usually spent on data processing rather than the visual part.