We encounter massive performance issues while persisting and restoring the XamGrid with large data. We want to specifiy the persisted properties, because on the one hand the stored byte-array is too large and on the other hand it might improve the performance of the restoring-process. At the moment this are our PersistenceSettings:
_settings = new PersistenceSettings { SavePersistenceOptions = PersistenceOption.OnlySpecified, LoadPersistenceOptions = PersistenceOption.OnlySpecified }; _settings.PropertySettings.Add(new PropertyNamePersistenceInfo { PropertyName = "Columns", Options = PropertyNamePersistenceOptions.PropertyName }); _settings.PropertySettings.Add(new PropertyNamePersistenceInfo { PropertyName = "GroupByColumns", Options = PropertyNamePersistenceOptions.PropertyName }); _settings.PropertySettings.Add(new PropertyNamePersistenceInfo { PropertyName = "SortedColumns", Options = PropertyNamePersistenceOptions.PropertyName });
In general we want to store the FilterRow, GroupedBy, ColumnPosition, ColumnWidth, HiddenColumns, SortedColumns. My question is for example: Do I really have to store the whole property "GroupByColumns" to know which columns where grouped? Same for the other properties.
I've attached a solution where you can reproduce the issue. Just play arround with Save and Load....
Hi,
Thank you for your post. I have been looking into your sample application and I can see a delay only when restoring a column sorting. Could you please tell me if this is your scenario because I need to have specific steps for reproducing an issue?
Looking forward to hearing from you.
All restoring procedures are slow: eg. Grouping by Text1 than by TrueFalse. Restoring needs a long time.
Did you notice the size of the configs (Byte-Array)? Between 20 and 30Mb each.
Hi Karl,
Thank you for your reply. I have been further investigating your issue and it occurs because of the large amount of rows in the XamGrid control(190000). The group by operation requires some time for its performance because in your scenario when grouping by the ‘Text1’ column, new 190000 GroupByRows are generated. I believe that this is expected behavior.
Let me know, if you need any further assistance on this matter.
Ok. Any suggestions for the size problem of the stored configuration?
The saved by the Persistence Manager data could be reduced by following a couple of approaches. One of them is to store only the properties you need not all the settings in the grid by setting the persistence options to save only specific properties - OnlySpecified. Another thing could be to compress the MemoryStream that where the data is stored. This could be done using the DeflateStream class: http://msdn.microsoft.com/en-us/library/system.io.compression.deflatestream.aspx. I would also suggest you to have a look at the following post where similar issue was discussed: http://es.infragistics.com/community/forums/t/48464.aspx.I hope this information will be helpful for you.
Thank you for your feedback. Please do not hesitate to contact us if you need additional assistance when you have the time to review this.
I am affraid I had no time to further inspect this problem. I will get back to you end of February if I need more help. In general the issue still exists.
Hello,
I am just checking if you had a chance to look into this and if you would like any further assistance on the matter.
When it comes to storing properties using persistence manager, you can specify which property to store on control basis. Let say that the column width should be persisted. In this case the ColumnWidth property should be added to the PersistanceSettings’s PropertySettings collection. This will save the width of all columns of the grid. When it comes to compressing the file that is created with the saved properties, I would suggest you to use a compression for the xml file where the properties are stored.
Hm..., that was exactly my question in the first place:
In general we want to store the FilterRow, GroupedBy, ColumnPosition, ColumnWidth, HiddenColumns, SortedColumns. My question is for example: Do I really have to store the whole property "GroupByColumns" to know which columns where grouped? Same for the other properties