我们开始在项目中更多地使用GWT, GWT编译器的性能也越来越令人讨厌。

我们将开始改变我们的工作实践来缓解这个问题,包括更加强调托管模式浏览器,它将运行GWT编译器的需要推迟到以后,但这也带来了风险,特别是在真正的浏览器中发现问题的时间比我们希望的要晚得多。

理想情况下,我们希望让GWT编译器本身更快——编译一个相当小的应用程序只需一分钟,这简直是浪费时间。但是,我们使用的编译方式相当简单,所以我希望我们可以快速轻松地获得一些好处。

我们目前正在调用com.google.gwt.dev.Compiler作为一个java应用程序从ant ant目标,最大堆256m和大量的堆栈空间。编译器由Ant使用fork=true和最新的Java6 JRE启动,以尝试并利用Java6改进的性能。我们将主控制器类与应用程序类路径一起传递给编译器,然后就可以运行了。

我们还能做什么来获得额外的速度?我们能不能给它更多的信息,让它花更少的时间去发现该做什么?

我知道我们可以告诉它只编译一个浏览器,但我们需要做多浏览器测试,所以这是不实际的。

在这一点上欢迎任何建议。


当前回答

这是用户列表。您可以将其设置为代理的值。

(添加这个在这里,因为我一直结束在这里,当我搜索什么,我应该让它只产生一个排列铬。答案是:<set-property name="user "。代理“价值= "旅行" / >)

其他回答

这是用户列表。您可以将其设置为代理的值。

(添加这个在这里,因为我一直结束在这里,当我搜索什么,我应该让它只产生一个排列铬。答案是:<set-property name="user "。代理“价值= "旅行" / >)

如果使用-localWorkers标志运行GWT编译器,编译器将并行编译多个排列。这让你可以使用多核机器的所有核心,例如-localWorkers 2会告诉编译器并行编译两个排列。 你不会得到数量级的差异(并不是编译器中的所有东西都是可并行的),但如果你编译多个排列,它仍然是一个显著的加速。

如果您愿意使用GWT的主干版本,那么您将能够对任何浏览器使用托管模式(进程外托管模式),这可以缓解托管模式的大部分当前问题。这似乎就是GWT的发展方向——始终使用托管模式进行开发,因为编译不太可能更快。

在GWT的新版本中(我认为从2.3或2.4开始),您还可以添加

<collapse-all-properties />

到您的gwt.xml用于开发目的。 这将告诉GWT编译器创建一个覆盖所有地区和浏览器的单一排列。因此,您仍然可以在所有浏览器和语言中进行测试,但仍然只编译了一种排列

对于GWT 2。我刚刚发现,如果你用

<set-property name="user.agent" value="ie6"/>
<extend-property values="ie8,gecko1_8" name="user.agent"/>

您甚至可以指定多个排列。

将应用程序拆分为多个模块或入口点,只在需要时重新编译。 使用中继版本分析应用程序——它提供了编译器的Story。这可能与1.6版编译器无关,但它可以指示正在发生什么。