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 -~----------~----~----~----~------~----~------~--~---
