Hi John,

have a look at the bulk renderer feature of the GWT incubator project:
http://code.google.com/p/google-web-toolkit-incubator/wiki/BulkTableRenderers
and
http://code.google.com/docreader/#p=google-web-toolkit-incubator&s=google-web-toolkit-incubator&t=BulkTableRenderers

Best regards,
Tibor

On Dec 29, 5:32 am, John Lonergan <[email protected]> wrote:
> Hi - yep there was a problem in my test program but now that that's
> ironed out I'm getting ok'ish performance in FF3 and Chrome however in
> IE the perf is poor.
>
> All the time is spent populating the grid / rendering.
>
> IE is the target deployment platform - they only have IE installed.
>
> Have been looking for online samples that are useful for demonstrating
> a sort of problem I'm seeing.
>
> I found this useful demo that allowed me to verify that what I'm
> seeing re rendering times is not just a result of my dodgy program.
>
> http://google-web-toolkit-incubator.googlecode.com/svn/trunk/demo/Scr...
>
> I tested by clicking "Add 100 rows" on the Data Manipulation tab.
>
> The relative timings are ...
> IE      15 secs
> FF3     3 secs
> Chrome  1 sec
>
> This is consistent with what I see for my grid test.
> I'm using com.extjs.gxt.ui.client.widget.grid.Grid
>
> I suspect that the more basic a grid I use, the quicker the rendering
> will be.
>
> However, I assume one can achieve something similar to the 'big data
> set example" from 
> DHTMLXhttp://www.dhtmlx.com/docs/products/dhtmlxGrid/samples/loading_big_da...
> Where we fetch the data in chunks on-demand.
>
> However, I've noticed that the time taken to insert new rows on the
> GWT grids I've played with takes longer the more rows are inserted.
>
> Are there any good examples of what can be done with big grids without
> paging?
>
> On Dec 22, 2:15 pm, gregor <[email protected]> wrote:
>
> > Hi John,
>
> > Yes, compile/browse ought to give you goodperformance. A 200 Person[]
> > returned over RPC should enable you to resize and show all of them in
> > a Grid within about 0.5s in web mode (it works in compile/browse too).
> > Example code below. If it isn't doing so, then something is wrong with
> > what you are doing I think, not the RPC layer.
>
> > regards
> > gregor
>
> > public class SandBox implements EntryPoint {
>
> >     private VerticalPanel layout = new VerticalPanel();
> >     private ScrollPanel scroller = new ScrollPanel();
> >     private Grid grid = new Grid(1, 5);
>
> >     private Button fireBtn = new Button("Fire", new ClickListener() {
>
> >         public void onClick(Widget sender) {
> >             GenericListServiceAsync proxy =
> > GenericListService.App.getInstance();
> >             proxy.getPeople(new AsyncCallback() {
>
> >                 public void onFailure(Throwable caught) {
> >                     Window.alert("RPC call failed");
> >                 }
>
> >                 public void onSuccess(Object result) {
> >                     Person[] people = (Person[]) result;
> >                     loadGrid(people);
> >                 }
> >             });
> >         }
> >     });
>
> >     public void onModuleLoad() {
>
> >         scroller.setHeight("" + (Window.getClientHeight() - 100));
> >         scroller.setWidth("100%");
> >         scroller.add(grid);
>
> >         grid.setBorderWidth(4);
> >         grid.setWidth("100%");
>
> >         layout.add(fireBtn);
> >         layout.add(scroller);
> >         layout.setSize("100%","100%");
> >         RootPanel.get().add(layout);
> >     }
>
> >     private void loadGrid(Person[] people) {
>
> >         grid.resize(people.length,5);
> >         for (int i = 0; i < people.length; i++) {
> >             Person p = people[i];
> >             grid.setWidget(i,0,new Label(p.getPersonId()));
> >             grid.setWidget(i,1,new Label(p.getFirstName()));
> >             grid.setWidget(i,2,new Label(p.getLastName()));
> >             grid.setWidget(i,3,new Label(p.getEmail()));
> >             grid.setWidget(i,4,new Label(p.getPhone()));
> >         }
> >     }
>
> > }
>
> > On Dec 22, 11:57 am, John Lonergan <[email protected]> wrote:
>
> > > Thanks Gregor
>
> > > I've hit the Compile/Browse button - I understood that caused the app
> > > to run in 'web mode' (as opposed to hosted).
>
> > > Or do I need to run it in a standalone tomcat to get a perf boost?
>
> > > John
>
> > > On Dec 19, 1:48 pm, gregor <[email protected]> wrote:
>
> > > > Hi John,
>
> > > > It sounds like you might be testing this in hosted mode. If so, be
> > > > aware that hosted modeperformance, especially where RPC is concerned,
> > > > bears no relationship whatever to deployedperformance. If so, deploy
> > > > your example and I think you will be amazed at the difference. Note
> > > > building grids, trees etc involves drawing an order of magnitude more
> > > > HTML boxes than there are items to display. 200 odd Persons should
> > > > display < 0.5s when deployed, but go up to 1000+ and you will probably
> > > > start to notice the browser groaning under the pressure. Then you can
> > > > either fetch in batches over RPC or (in the say 500-2000 item range)
> > > > cache all the items on the client and page the grid from that. It
> > > > obviously varies by situation, but RPC data transfer is one thing and
> > > > the HTML box drawing is another.
>
> > > > regards
> > > > gregor
>
> > > > On Dec 19, 2:08 am, John Lonergan <[email protected]> wrote:
>
> > > > > I have been evaluating GWT but have come up against a problem I cannot
> > > > > solve/understand.
>
> > > > > I have a little service method that returns a list of 'person data'
>
> > > > > I am finding that whilst the server side take around zero milli-secs
> > > > > to handle the query (100-200 rows) the client is taking seconds before
> > > > > the AsyncCallback.onSuccess() callback fires.
>
> > > > > I am guessing that GWT is taking an age to deserialise the response.
>
> > > > > I cannot afford to wait 2 or 3 seconds to deserialise and then render
> > > > > the response.
>
> > > > > I am unsure what factors might be influencing theperformance. Or
> > > > > tuning/settings I might look at.
>
> > > > > I imagine that populating a long grid (well a couple of hundred rows)
> > > > > is something that must be fairly common and that I am doing something
> > > > > wrong, or missing a trick.
>
> > > > > Small sets of 10 rows come back fast enough, but the responsiveness
> > > > > degrades proportionally to the number of rows returned ....
> > > > >   12 rows 139ms
> > > > >   40 rows 719ms
> > > > >   120 rows 2109ms
>
> > > > > I like the benefits of being able to use the Java programming model
> > > > > and toolset - but unless I can solve the perf issues I must look into
> > > > > alternatives such as generating HTML on the server; ie becoming a more
> > > > > classic JSP/HTML site and I really don't want to do this if I can
> > > > > avoid it.
>
> > > > > Help/advice gratefully accepted.
>
> > > > > See API below.
>
> > > > > John
>
> > > > > My API looks like this..
>
> > > > > // SERVICE INTERFACE
> > > > > public interface ContactService extends RemoteService {
> > > > >         public Person[] findContactByName(String namePart);
>
> > > > > }
>
> > > > > // TRANSFER OBJECT
> > > > > public class Person implements IsSerializable {
> > > > >         private static final long serialVersionUID = 1L;
> > > > >         String personId;
> > > > >         String firstName;
> > > > >         String lastName;
> > > > >         String email;
> > > > >         String phone;
>
> > > > >         bunch of Getter/Setters - code omited.
>
> > > > > }- Hide quoted text -
>
> > - Show quoted text -
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Google Web Toolkit" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/Google-Web-Toolkit?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to