OK, we're back from vacation and we've been working all week to tweak stuff. At this point the app seems to be working very well in Chrome with >14,000 records in the grid. IE takes about twice as long as Chrome, but still very acceptable. Firefox can take over a minute to load a grid with only 4500 records in it, which is way too slow (not certain yet whether we care enough about FF to want to work on this).
We have run into two issues.
In IE if we move around in our UI we keep consuming more memory and after a little while crash the browser. We're working on this and it may just be a simple matter of needing to clean up our DataSources manually.
The other issue is that it takes a lot longer to perform updates on our grid if it is sorted on one of our columns in particular. We are testing in IE11 with 4500 records in the grid and updating 50 of them after changing one field in each record to a new value (the field changed is not a sort field). We are running in Production mode and are measuring the time using the IE development console profiler. Most of the update time is spent in the sort routine. Normally the updates take 200ms or less. However when we set the sort to this particular field the update takes 1500ms.
We've tried to repro this in a simple sample with no success. We have not been able to determine what it is about this field that causes the problem. We think it has something to do with the data type. With most of our fields the underlying data is a String, Integer, or Date. In this case it is a Long (if we add other Long fields we see the same problem, but not on any String, Integer, or Date fields).
The data in the field originates as a Date object based upon when the record was created. The server takes the long value out of the Date object and stores it in our SQL database as a bigint. The client retrieves this data from the server via the DataSource FETCH which makes a REST call and receives JSON back from the server. The JSON for this field looks like:
The corresponding DataSource and ListGrid fields are of type INTEGER.
We tried creating a sample with dummy records containing fields like this and record data that contains Integer, Date, and Long values. In the sample we can sort on any of these fields and the times are all very similar and very fast.
We are not certain what is happening. Maybe the DataSource is treating the information from the server as a String and needing to convert it to a Number each time in order to do the compare? Or maybe even doing String compares on the data? Can you think of anything that might be causing the updates to take longer when sorted on this field vs another? We are at a loss as to what might be causing this or how to fix it.
We have run into two issues.
In IE if we move around in our UI we keep consuming more memory and after a little while crash the browser. We're working on this and it may just be a simple matter of needing to clean up our DataSources manually.
The other issue is that it takes a lot longer to perform updates on our grid if it is sorted on one of our columns in particular. We are testing in IE11 with 4500 records in the grid and updating 50 of them after changing one field in each record to a new value (the field changed is not a sort field). We are running in Production mode and are measuring the time using the IE development console profiler. Most of the update time is spent in the sort routine. Normally the updates take 200ms or less. However when we set the sort to this particular field the update takes 1500ms.
We've tried to repro this in a simple sample with no success. We have not been able to determine what it is about this field that causes the problem. We think it has something to do with the data type. With most of our fields the underlying data is a String, Integer, or Date. In this case it is a Long (if we add other Long fields we see the same problem, but not on any String, Integer, or Date fields).
The data in the field originates as a Date object based upon when the record was created. The server takes the long value out of the Date object and stores it in our SQL database as a bigint. The client retrieves this data from the server via the DataSource FETCH which makes a REST call and receives JSON back from the server. The JSON for this field looks like:
Code:
"joblet_queueOrderTime":"1452200748275"
We tried creating a sample with dummy records containing fields like this and record data that contains Integer, Date, and Long values. In the sample we can sort on any of these fields and the times are all very similar and very fast.
We are not certain what is happening. Maybe the DataSource is treating the information from the server as a String and needing to convert it to a Number each time in order to do the compare? Or maybe even doing String compares on the data? Can you think of anything that might be causing the updates to take longer when sorted on this field vs another? We are at a loss as to what might be causing this or how to fix it.
Comment