Performance Optimization for Ext GWT 3.0
Upcoming SlideShare
Loading in...5
×
 

Performance Optimization for Ext GWT 3.0

on

  • 3,357 views

Application performance is an important part of an application’s usability. This session will provide detailed information and tips to keep your applications running fast.

Application performance is an important part of an application’s usability. This session will provide detailed information and tips to keep your applications running fast.

Statistics

Views

Total Views
3,357
Views on SlideShare
3,176
Embed Views
181

Actions

Likes
0
Downloads
97
Comments
0

4 Embeds 181

http://www.sencha.com 177
http://sencha.site 2
http://www.sencha.com.sixxs.org 1
http://lg-mg230.appspot.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Performance Optimization for Ext GWT 3.0 Performance Optimization for Ext GWT 3.0 Presentation Transcript

  • Wednesday, November 2, 2011
  • PERFORMANCE Sven Brunken sven@sencha.com @svenbrunkenWednesday, November 2, 2011
  • Overview Why optimize an application? What can you optimize? How to optimize it? QuestionsWednesday, November 2, 2011 View slide
  • Why Optimize An Application?Wednesday, November 2, 2011 View slide
  • Better User ExperienceWednesday, November 2, 2011
  • What Can You Optimize?Wednesday, November 2, 2011
  • What Can You Optimize? Application loading time Application performance Memory consumptionWednesday, November 2, 2011
  • But, How To Do It?Wednesday, November 2, 2011
  • Application Loading GZip your content Cache your content Remove not required files Obfuscate any external CSS and Javascript Reduce the amount of RPC calls on application startupWednesday, November 2, 2011
  • GZip Your Files GWT has a pre defined Linker for this Simply inherit the PrecompressLinker module By default in gzips your html, js and css filesWednesday, November 2, 2011
  • How To Reduce The Amount of RPC Calls?Wednesday, November 2, 2011
  • How To Reduce It? Applications require to load multiple initial data Each load makes a new round trip to the server Each request contains a huge amount of data And there is the HTTP protocol overheadWednesday, November 2, 2011
  • 10 Requests At Page LoadWednesday, November 2, 2011
  • 10 Requests At Page LoadWednesday, November 2, 2011
  • 10 Requests At Page LoadWednesday, November 2, 2011
  • Extra Data With Each RequestWednesday, November 2, 2011
  • Extra Data With Each RequestWednesday, November 2, 2011
  • Why Not Sending The Data With the Initial Request?Wednesday, November 2, 2011
  • Advantages No further roundtrip required All data on the client with the first page load Less waiting time for the userWednesday, November 2, 2011
  • Extra Data With Each RequestWednesday, November 2, 2011
  • Extra Data With Each RequestWednesday, November 2, 2011
  • No More Request At Page LoadWednesday, November 2, 2011
  • DemonstrationWednesday, November 2, 2011
  • How To Do It? Serialize the data manually String value = "Lorem ipsum dolor sit amet, consectetur ..."; ServerSerializationStreamWriter writer = new ServerSerializationStreamWriter (RPC.getDefaultSerializationPolicy()); writer.prepareToWrite(); writer.serializeValue(value, String.class);Wednesday, November 2, 2011
  • Put It Into The Main Page We put the Data for all our calls into a Javascript Object <script> var dictionary = { <% String value = "Lorem ipsum dolor sit amet, consectetur ..."; String[] methods = {"A","B","C","D","E","F","G","H","I","J"}; for (int i = 0; i < methods.length; i++) { ServerSerializationStreamWriter writer = ... out.print(""call"+methods[i]+"": ""+writer.toString().replaceAll(""," " ).replaceAll(""",""" )+"""); if(i<methods.length-1) { out.print(","); } } %> }; </script>Wednesday, November 2, 2011
  • Client Side Is Reading It Taking advantage of the SerializationStreamFactoy class Using the Dictionary to access our Javascript Object SerializationStreamFactory factory = GWT .create(PerformanceService.class); Dictionary d = Dictionary.getDictionary("dictionary"); try { SerializationStreamReader r = null; r = factory.createStreamReader(d.get("callA")); String v1 = r.readString(); ... } catch (SerializationException e) { throw new RuntimeException(e); }Wednesday, November 2, 2011
  • Application Performance Do not try to solve everything with Widgets Do not run complicated logic on the client Do not use more Widgets than required Do not create Widgets until neededWednesday, November 2, 2011
  • Widgets Are Expensive Do not use Widgets for everything They are expensive Try to use plain HTML where ever possibleWednesday, November 2, 2011
  • Only Simple Logic Do not try to solve complicated logic on the client Make a server round trip Do not run code that is not required Analyze your code to see if really only the required runsWednesday, November 2, 2011
  • Reduce The Widget Count Do not nest containers too deeply Only use the minimum amount of containers requiredWednesday, November 2, 2011
  • Too Many Not Required ContainersWednesday, November 2, 2011
  • Too Many Not Required ContainersWednesday, November 2, 2011
  • Same Looking, Less ContainersWednesday, November 2, 2011
  • Same Looking, Less ContainersWednesday, November 2, 2011
  • DemonstrationWednesday, November 2, 2011
  • And This Has One More Advantage!Wednesday, November 2, 2011
  • Reduced Memory ConsumptionWednesday, November 2, 2011
  • BeforeWednesday, November 2, 2011
  • BeforeWednesday, November 2, 2011
  • After, Same FunctionalityWednesday, November 2, 2011
  • After, Same FunctionalityWednesday, November 2, 2011
  • QuestionsWednesday, November 2, 2011
  • Thank You!Wednesday, November 2, 2011