2010-04-18

Speeding up GWT

I’ve recently come across a few great resources on how to speed up client-side GWT:
  • Effective GWT: Developing a complex, high-performance app with Google Web Toolkit” Describes interesting tricks for making your application faster. One of the main challenges for them was to make everything work with IE 6. Interesting points were:
    • DeferredCommand can be used to execute code after the current invocation. Very handy in event handlers where performing complex user interface changes can lead to weird behavior, such as the “bleeding through” of return keys, etc. This may well have been the most important take-away of the talk for me (as I am currently not too concerned about performance in my projects).
    • Also cool: They describe how to go from GUI sketches on paper to a PhotoShop mock-up to a GWT implementation.
    • Generating HTML (on the client) and letting the browser parse it is fastest for generating DOM. I’m assuming that is as far as IE 6 is concerned where each created JavaScript object is very costly.
    • Foreach is slow, because an iterator (=JavaScript object) has to be created. With an integer index, this does not happen.
    • Programmatic manipulation of styles via widget.getElement().getStyle() is slow, using CSS is faster.
  • Simpler and Speedier GWT with Server Side RPC Serialization” It is a common technique to make the first remote procedure call (RPC) directly after the page has loaded. To improve performance, one can simulate that RPC and embed the result inside the web page on the server. The previous talk mentioned this trick which lead me to investigate further and find this article.
  • Resource Bundles and Linkers in Google Web Toolkit” This talk goes further into details how data can be served more compactly. It was linked from the previous article.

No comments: