How can this be possible?
Firefox on devmode (here elements win):
Widgets:3990msElements:2806ms
Firefox with the compiled app:
Widgets:448msElements:543ms
Here is the code:
- package com.performance.client;
-
- import com.google.gwt.core.client.GWT;
- import com.google.gwt.dom.client.Element;
- import com.google.gwt.dom.client.ImageElement;
- import com.google.gwt.event.dom.client.ClickEvent;
- import com.google.gwt.event.dom.client.ClickHandler;
- import com.google.gwt.uibinder.client.UiBinder;
- import com.google.gwt.uibinder.client.UiField;
- import com.google.gwt.user.client.ui.Widget;
-
- public class ElementEvent extends Widget {
-
- private static ElementEventUiBinder uiBinder = GWT.create(ElementEventUiBinder.class);
-
- interface ElementEventUiBinder extends UiBinder<Element, ElementEvent> {
- }
-
-
- @UiField
- ImageElement image;
-
- @UiField
- Element button;
-
- @UiField
- Element label;
-
- public ElementEvent() {
- setElement(uiBinder.createAndBindUi(this));
-
- addDomHandler(new ClickHandler() {
- @Override
- public void onClick(ClickEvent event) {
- Element e = event.getNativeEvent().getEventTarget().cast();
- if (e.equals(label)) {
- image.setSrc(i1);
- } else if (e.equals(button)) {
- image.setSrc(i2);
- }
- }
- }, ClickEvent.getType());
- }
- }
- <!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
- <ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder">
- <ui:style>
- </ui:style>
- <div>
- <div ui:field="label">1</div>
- <button ui:field="button">1</button>
- <img ui:field="image"src="http://www.gstatic.com/codesite/ph/images/defaultlogo.png"></img>
- </div>
- </ui:UiBinder>
- package com.performance.client;
-
- import com.google.gwt.core.client.GWT;
- import com.google.gwt.event.dom.client.ClickEvent;
- import com.google.gwt.uibinder.client.UiBinder;
- import com.google.gwt.uibinder.client.UiField;
- import com.google.gwt.uibinder.client.UiHandler;
- import com.google.gwt.user.client.ui.Composite;
- import com.google.gwt.user.client.ui.Image;
- import com.google.gwt.user.client.ui.Widget;
-
- public class WidgetEvent extends Composite {
-
- private static WidgetEventUiBinder uiBinder = GWT.create(WidgetEventUiBinder.class);
-
- interface WidgetEventUiBinder extends UiBinder<Widget, WidgetEvent> {
- }
-
-
- public WidgetEvent() {
- initWidget(uiBinder.createAndBindUi(this));
- }
-
- @UiField
- Image image;
-
- @UiHandler("label")
- public void labelClick(ClickEvent e) {
- image.setUrl(i1);
- }
-
- @UiHandler("button")
- public void buttonClick(ClickEvent e) {
- image.setUrl(i2);
- }
- }
- <!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
- <ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
- xmlns:g="urn:import:com.google.gwt.user.client.ui">
- <ui:style>
-
- </ui:style>
- <g:HTMLPanel>
- <g:Label ui:field="label">0</g:Label>
- <g:Button ui:field="button">0</g:Button>
- <g:Image ui:field="image"url="http://www.gstatic.com/codesite/ph/images/defaultlogo.png"></g:Image>
- </g:HTMLPanel>
- </ui:UiBinder>
- package com.performance.client;
-
- import com.google.gwt.core.client.EntryPoint;
- import com.google.gwt.user.client.ui.FlowPanel;
- import com.google.gwt.user.client.ui.HorizontalPanel;
- import com.google.gwt.user.client.ui.Label;
- import com.google.gwt.user.client.ui.RootPanel;
- import com.google.gwt.user.client.ui.VerticalPanel;
-
- public class EventPerformance implements EntryPoint {
-
- @Override
- public void onModuleLoad() {
- VerticalPanel v = new VerticalPanel();
- v.setWidth("100%");
-
- HorizontalPanel p = new HorizontalPanel();
- p.setWidth("100%");
-
- final Label w = new Label();
- final Label e = new Label();
-
- v.add(w);
- v.add(e);
- v.add(p);
-
- FlowPanel p1 = new FlowPanel();
- FlowPanel p2 = new FlowPanel();
-
- p.add(p1);
- p.add(p2);
-
- long init = System.currentTimeMillis();
- for (int i = 0; i < 1000; i++) {
- p2.add(new ElementEvent());
- }
- e.setText("Elements:" + (System.currentTimeMillis() - init) + "ms");
-
- init = System.currentTimeMillis();
- for (int i = 0; i < 1000; i++) {
- p1.add(new WidgetEvent());
- }
- w.setText("Widgets:" + (System.currentTimeMillis() - init) + "ms");
-
- RootPanel.get().add(v);
- }
- }
Thanks!
Guit: Elegant, beautiful, modular and *production ready* gwt applications.
http://code.google.com/p/guit/
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+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
No comments:
Post a Comment