Hi Nick,

Flex table is pretty slow if you want to display 50+ rows in it at a
time based on our experience. The slowness also varies for each
browser, only realistic way of getting around this problem is to
implement pagination, where you display only 20-30 rows on each page
and then provide links on the header to navigate through the pages.

This way i am able to manage a display of thousands of records in less
than 500 milliseconds across the browsers (FF and chrome faster then
IE).
The application has many views with this approach displaying simple
tabluar data and also hierarchical data structures.
For displaying hierarchical data structures i initially went with
Tree, but that was pretty slow for large no. of rows, so i simulated
tree inside FlexTable using Click listener on (+/-) images.
This works like a charm.

Regards,
Milind

On Feb 18, 4:21 pm, Nick <nickc...@gmail.com> wrote:
> Ok, Results
> What I’m finding is that the Grid does beat the FlexTable, but not by
> much with a small data set.  Larger sets seem to widen the gap.  My
> guess for this is that since FlexTable has the ability to add rows
> (Grid is sized from the start) that it works much like how other
> resizable constructs work such as Java’s ArrayList. My reasoning for
> this is that the first time the test is run the speed is very slow on
> the FlexTable (especially in IE).  Repeated test runs after the
> initial are faster and I think this is because the table was being
> sized the first time as rows were added, and didn’t need to be resized
> during the following tests.
>
> The other thing I’m finding is that performace varies based on
> browser.  I’m seeing FF run reasonably well.  With IE the Grid runs
> about the same as FF but the FlexTable runs considerably slower.  I
> also tested Opera and was stunned as it blew both others out of the
> water.
>
> My full write up is here with times and a test application you can run
> in your 
> browser.http://whatwouldnickdo.com/wordpress/401/performance-grid-vs-flextable/
>
> On Feb 18, 2:10 pm, Nick <nickc...@gmail.com> wrote:
>
> > Thanks for the response, I think you're correct.  And it makes sense
> > that adding rows dynamically would account for the increase in time as
> > the row count is higher.
> > I'm going to run a few tests, and I'll post anything I find to this
> > post.
>
> > On Feb 18, 3:09 am, Alexey_Tsiunchik <alexey.tsiunc...@gmail.com>
> > wrote:
>
> > > Hello Nick,
>
> > > Exactly the same issue was in our app. We need to display big lists
> > > (100 - 500) records, and FlexTable seems not solution for this.
>
> > > The problem is that FlexTable always checks table bounds (row number,
> > > column number) and when you put some value in FlexTable it performs
> > > checking for bounds, moreover it not store the colnum and rownum in
> > > some variables, but always calculate them dynamically. Moreover it
> > > dynamocally adds new rows.
> > > Thats why it becomes slower when number of rows increase.
>
> > > We had decided to use Grid rather then FlexTable. We can specify Grid
> > > bounds right after creation, and while we put data in cells in the
> > > cycle its performance remains the same for different grid size (here I
> > > mean speed of adding row).
>
> > > But it also has it's disadvantages. When we need to display another
> > > data in the same Grid, and this data has different number of rows,
> > > we should call Grod.resize(int, int). And for
> > > big grids, this operation is very slow in IE (in our tests resizing
> > > grid with 200 rows, 5 columns, takes ~13000 ms in IE).
>
> > > So It seems paging here the only solution.
>
> > > Tuesday, February 17, 2009, 6:40:51 PM, you wrote:
>
> > > > Ok, I did some more testing and I was wrong.  It's not the inserting
> > > > and removing from lists that are the bottleneck.  I moved the time and
> > > > log statements around and it had to do with adding to the FlexTable
> > > > itself.
> > > > I'm using code like:
> > > > int row = 1;
> > > > for (Iterator<MyData> iter = eventList.iterator(); iter.hasNext(); row+
> > > > +) {
> > > >   long sysTime = System.currentTimeMillis();
> > > >   int column = 0;
> > > >   MyData event = (MyData)iter.next();
> > > >   table.setText(row, column, event.getNameLast());
> > > >   column++;
> > > >   table.setText(row, column, event.getNameFirst());
> > > >   column++;
> > > >   table.setText(row, column, event.getJob());
> > > >   column++;
> > > >   GWT.log("update time 4: "+(System.currentTimeMillis()-sysTime)+"ms
> > > > ", null);
> > > > }
> > > > Now, you can see I'm logging the time after every row is inserted.
> > > > The odd thing I'm seeing is that the time per row increase as rows are
> > > > traversed.  For example, row 1 takes about 30ms but as the rows
> > > > traverse by row 100 each row is taking about 150ms.  It's a steady
> > > > increase.
> > > > Any insights?
>
> > > --
> > > Best regards,
> > >  Alexey_Tsiunchik                            
> > > mailto:alexey.tsiunc...@gmail.com
--~--~---------~--~----~------------~-------~--~----~
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-Web-Toolkit@googlegroups.com
To unsubscribe from this group, send email to 
google-web-toolkit+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/Google-Web-Toolkit?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to