We use cookies to give you the best experience on our website. If you continue to browse, then you agree to our privacy policy and cookie policy. Image for the cookie policy date

large data hidden column

Hello, I have one problem and would like to have suggestion on how to solve it.

I am currently using one hidden column that holds 2 years of historical data in order to calculate summaries. I does not consume to much memory (average application consuption is aroud 200 MB)
Now I have a requisite to increase the size of those colums to 8 years of data. The first attempt to do that increase the memory consuption to (2 GB)

I wonder if there is a better solution to handle this type of situation.

Thanks for sugestions in advance

3 Replies

AK Adhikesevan Kothandaraman Syncfusion Team September 10, 2015 07:27 AM UTC

Hi Felipe,

Thank you for contacting Syncfusion Support.

We are unclear and need to clarify few things from your post. It will be helpful for us to provide a proper solution.

Clarification:

1)      Is that you need to calculate the Summary value for hidden columns also using SummaryValueDescriptor? If no, then you can remove those columns from binding using, for example, Select SQL query or TableDescriptor.Columns.Remove() methods while setting the data source.

 

2)      Is that the memory consumption gets high while large data along with the summaries or particularly calculating the summary value of the hidden columns?

3)      Which of these two methods you are using for hiding the columns?


Method 1:

//Remove the VisibleColumns from the table descriptor collection

this.gridGroupingControl1.TableDescriptor.VisibleColumns.Remove("ColumnName");


Method 2:

//Hide the columns by setting the column width as

this.gridGroupingControl1.TableModel.Cols.Hidden["ColumnName"] = true;


Regards,
Adhi.



FB Felipe Bahiana Almeida September 10, 2015 01:51 PM UTC

Question 1 - I am not using the SummaryValue, I use the manual calculated sumaries.
Question 2 - I do not calculate sumaries on hidden columns. There is one visible column that holds the value for a particular item, but to calculate sumaries, I have to use data that is in a column of the datasource, but there is no equivalent column in the TableDescriptor.
Question 3 - None of them. The column exists in the DataSouce (DataTable) but the table descriptor does not have a ColumnDescriptor for that.


VS Venkatesh Sundaram Syncfusion Team September 11, 2015 11:41 AM UTC

Hi Felipe,

Please use the below optimization settings to increase the performance in GridGroupingControl.


girdGroupingControl.InvalidateAllWhenListChanged = false;
girdGroupingControl.AllowedOptimizations = EngineOptimizations.All;
girdGroupingControl.CounterLogic = EngineCounters.YAmount;
girdGroupingControl.UseDefaultsForFasterDrawing = true; // GDI interop drawing, FirstNRecords Summaries used to increase painting performance
girdGroupingControl.TableOptions.ColumnsMaxLengthStrategy = GridColumnsMaxLengthStrategy.FirstNRecords;
girdGroupingControl.TableOptions.ColumnsMaxLengthFirstNRecords = 100;



Refer the sample from our browser sample shipped along with below location. it demonstrates performance behavior in GridGroupingControl.
Grid Grouping Samples -> Engine Optimization Demo
Grid Grouping Samples -> Grouping Performance Demo



Here are some suggestions for the memory foot print:


The performance of loading the data’s can improve by making the child table of the Grid to load on demand. It avoids the performance delay by loading the data’s of the child only when it is expanded or needed.
 
The property UseLazyUniformChildListRelation must set to true to make the child table load on demand.

gridGroupingControl1.UseLazyUniformChildListRelation = true; 


To solve the memory footprint issue, avoid all the values to be cache. Set the CacheRecordValues as false.
gridGroupingControl1.Engine.CacheRecordValues = false; 


To support for groups and filtered records for large data sources, reduce the memory footprint by disabling the counters where the application is not needed.
gridGroupingControl1.Engine.CounterLogic = EngineCounters.YAmount; 


To reduce the auto size calculation for the column to some rows, where the performance can be increased.
It can be done by providing the FirstNRecords to the ColumnsMaxLengthStrategy, and specifying the number of record in ColumnMaxLengthFirstNRecords.

gridGroupingControl.TableOptions.ColumnsMaxLengthStrategy = GridColumnsMaxLengthStrategy.FirstNRecords;
gridGroupingControl.TableOptions.ColumnsMaxLengthFirstNRecords = 50;//the number of records you want checked.


Regards,
Venkat.


Loader.
Up arrow icon