Wednesday, January 21, 2015

Re: GWT compile times between 2.6.0 & 2.7.0

Jens,

Thanks for your prompt reply.

Here's the information I left out:
  • We are using Java 7. I'm aware of the performance issues with Java 8 & haven't upgraded yet.
  • We don't use GWT RPC or have server side calls. We are using HTTP Requests with RequestBuilder.
  • We have about 145 GWT modules with a single Entry Point.
  • We have 2 code generations for manage our multiple module approach & decoupling. I'm sure we have not implemented the incremental generator correctly.
  • We are evaluating the improvements in SuperDevMode in 2.7 over 2.6. This seems to be the primary reason for upgrading. We have seen improvements but the real question is productivity of our development staff working with SuperDevMode vs. DevMode when working with Java. There's no question about the use of SDM for JavaScript & JSNI debugging.
As for breaking up the app into smaller pieces, I'm very interested in this but we've yet to find a way to do this. Do you have any recommended reading on the subject? We curre

As for better computers for the developers, we try. We've mandated 16GB+ RAM & all computers are refreshed every 3 years with good specs. I've been pushing for SSDs but we have limited availability to most developers. :)

A few of us are heading to GWT.create tomorrow & hope to find some answers.

-Denny

On Thursday, January 15, 2015 at 6:49:08 PM UTC-5, Jens wrote:
I don't know why a developer wants to regularly compile an app during development except he want to optimize the amount of permutations. I can't remember when I did a full app compile during development.

Anyways, keep in mind that you have 800k line of code that GWT generates an AST from. Then it walks that AST multiple times to apply optimizations on it, then transforms that Java AST into a JavaScript AST and again walks through it multiple times to optimize again. Also you have defined a fragment count of 100 which tells me that you probably have lots of GWT.runAsync() calls in your code base. All of these must be analyzed so code can be assigned to correct code fragments and if some fragments are better merged. Finally you have 85 jars on class path. Its probably not a big gain but you might want to split server and client code into separate projects with separate class paths. You don't need server classes / libraries if you compile the GWT client code to JavaScript.

Overall I think a 3 min compile is pretty normal for that size. And if its 3 oder 4 minutes should literally be irrelevant. A developer should not need to compile the app regularly and you probably have a CI / build server anyways.

What you should evaluate is how fast incremental SuperDevMode in GWT 2.7 is, because that is what matters most during development since most recent browsers do not support the classic DevMode plugin anymore.

Also some report that Java8 might also slow down compilation a bit. If you have used it you could try Java7 instead.


If nothing helps you have to split your app into smaller pieces (additional GWT modules + entry points that only start a sub set of your app) that can be worked on during development ... or buy beefier computers for developers :)


-- J.

--
You received this message because you are subscribed to the Google Groups "Google Web Toolkit" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit+unsubscribe@googlegroups.com.
To post to this group, send email to google-web-toolkit@googlegroups.com.
Visit this group at http://groups.google.com/group/google-web-toolkit.
For more options, visit https://groups.google.com/d/optout.

No comments:

Post a Comment