Cell Table Data Handling & Performance

125 views
Skip to first unread message

BST

unread,
Jul 25, 2011, 6:49:14 AM7/25/11
to Google Web Toolkit
Hi,

I have successfully managed to use a Cell table & an abstract pager to
fetch the new set of data from an RPC and display them on the cell
table. Many thanks to the developer discussions and Developer Guide.

But I do have a few concerns, as I plan to use it for large data sets,
maybe like 10k objects. The Developer Guide does mention Cell table
can handle large data sets, but I wanna know how large is large, any
approximate number of objects in a list? Also a few other questions
below,


Will my browser performance become sluggish if I load too many objects
simultaneously ? For E.g lets say I store a list of Contact objects,
with a pic of the contact and other textual information such as name,
address and mail. The image might be a blob or a Base64 string.

Is there a performance lag while using the pager on a really large
data set?

If you are not sure, maybe you can tell me this, how the object
handling in a list w.r.t Cell Table is done , and do the objects exist
once objects are converted to html in the Cell Table on the client
Side?

Regards,
BST


John LaBanca

unread,
Jul 25, 2011, 12:14:48 PM7/25/11
to google-we...@googlegroups.com
On Mon, Jul 25, 2011 at 6:49 AM, BST <babus...@gmail.com> wrote:
Hi,

I have successfully managed to use a Cell table & an abstract pager to
fetch the new set of data from an RPC and display them on the cell
table. Many thanks to the developer discussions and Developer Guide.

But I do have a few concerns, as I plan to use it for large data sets,
maybe like 10k objects. The Developer Guide does mention Cell table
can handle large data sets, but I wanna know how large is large, any
approximate number of objects in a list? Also a few other questions
below,
The maximum page size is heavily dependent on the app and the data being displayed, but some teams have gotten into the 250-500 rows per page.  Assuming your backend can provide the data quickly, the limiting performance factor of CellTable is rendering, and rendering a 500 row table isn't instantaneous.


Will my browser performance become sluggish if I load too many objects
simultaneously ? For E.g lets say I store a list of Contact objects,
with a pic of the contact and other textual information such as name,
address and mail. The image might be a blob or a Base64 string.
All modern browsers should be able to handle an array of a few thousand Contact objects without a problem, but if you are searching through the array, that might be slow.  You also have to consider bandwidth constraints.  Can you load the Contacts on demand and push the processing to the server?


Is there a performance lag while using the pager on a really large
data set?
There is no performance lag in CellTable itself.  If your backend can provide data within a range, paging is a better experience than loading 10,000 objects upfront.

If you are not sure, maybe you can tell me this, how the object
handling in a list w.r.t Cell Table is done , and do the objects exist
once objects are converted to html in the Cell Table on the client
Side?
CellTable caches the row values within the current page so it can pass the row values to Cells, and so it can re-render rows when needed.  When you switch pages, the row values of the previous page are dumped.



Regards,
BST


--
You received this message because you are subscribed to the Google Groups "Google Web Toolkit" group.
To post to this group, send email to google-we...@googlegroups.com.
To unsubscribe from this group, send email to google-web-tool...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.


BST

unread,
Jul 25, 2011, 1:22:49 PM7/25/11
to google-we...@googlegroups.com

Many Thanks for the input. 

The scenario is that I am not displaying more than 100 rows per page. And the pager works through 3 pages. 

Yes the Data load is on Demand, as when the user presses the next button for the 4th page I am getting another 300 rows thru an RPC. It is a plain view only table. So only after the user has paged thru the 3 pages I go for the next batch of 300.

 Also No changes or search within the table, it is view only. The table is a result of a server call for search. So I guess so far no worries :-)


CellTable caches the row values within the current page so it can pass the row values to Cells, and so it can re-render rows when needed.  When you switch pages, the row values of the previous page are dumped.

My understanding: So when I am viewing the 11 th page with 100 rows and go to the 12th page  (using an implementation AbstractPager), the rows on the 11th Page is dumped and no longer in the browser. So only 100 rows are managed by the browser even though 1100 rows of data is available with the DataProvider List. Have I got it right?

Let's say the User has paged thru about 12 pages, so there is a list of 1200 in the dataProvider list already of which 100 are being shown in a page. So when the user goes back and forth within the range of 12 pages(1200 rows) sorting or changing the display per page  to be 50 or 25 (on the client side),will the cell table efficiently manage? 

I guess after your reply I will be more confident in delivering the solution :-)

John LaBanca

unread,
Jul 25, 2011, 2:02:34 PM7/25/11
to google-we...@googlegroups.com
Yes, it only caches the data on the current page.  When you go back and forth between pages (even pages that you've already visited), CellTable will send a new request to the data store for the rows in range.

This allows you to control the overall caching policy in your data provider.  You can choose to cache all rows that you receive from the server in your data provider, or you could, for example, just cache a window for plus or minus 5 pages.

I guess after your reply I will be more confident in delivering the solution :-)

--
You received this message because you are subscribed to the Google Groups "Google Web Toolkit" group.

BST

unread,
Jul 26, 2011, 1:58:23 AM7/26/11
to google-we...@googlegroups.com

Where does the datastore actually exist?

John LaBanca

unread,
Jul 26, 2011, 10:17:30 AM7/26/11
to google-we...@googlegroups.com
Do you mean CellTable's cache or the data store of your data?  CellTable's cache is in a List in HasDataPresenter, which is a package protected presenter implementation that backs all of the cell widgets.  Your data can exist anywhere you want, and you can use ListDataProvider or AsyncDataProvider to link your data store to the range change events that CellTable fires when it requests new data.


John LaBanca | GWT Software Engineer | jlab...@google.com                          



On Tue, Jul 26, 2011 at 1:58 AM, BST <babus...@gmail.com> wrote:

Where does the datastore actually exist?

--
You received this message because you are subscribed to the Google Groups "Google Web Toolkit" group.
Reply all
Reply to author
Forward
0 new messages