为了账号安全,请及时绑定邮箱和手机立即绑定

如何加快gwt编译器的速度?

/ 猿问

如何加快gwt编译器的速度?

青春有我 2019-10-14 15:13:18

我们开始在我们的项目中大量使用GWT,并且GWT编译器的性能变得越来越令人讨厌。

我们将开始改变工作方式以缓解该问题,其中包括更加强调托管模式浏览器,这使运行GWT编译器的需求推迟到以后,但这会带来自身的风险,特别是在直到比我们想要的要晚得多的时候,才真正的浏览器发现问题。

理想情况下,我们希望使GWT编译器本身更快-一分钟的编译相当小的应用程序耗费了小费。但是,如果使用的是相当幼稚的方式,我们将使用编译方式,因此我希望我们可以快速轻松地获得收益。

我们目前正在从ant Ant目标中调用com.google.gwt.dev.Compiler作为Java应用程序,最大堆内存为256m,并且有大量堆栈空间。Ant会使用fork = true和最新的Java 6 JRE启动该编译器,以尝试利用Java6的改进性能。我们将主控制器类与应用程序类路径一起传递给编译器,然后关闭。

我们还能做什么以提高速度?我们可以给它更多的信息,以便花费更少的时间来发现要做的事情吗?

我知道我们只能告诉它仅针对一个浏览器进行编译,但是我们需要进行多浏览器测试,因此这并不实际。

此时欢迎所有建议。


查看完整描述

3 回答

?
慕姐829404

让我们从一个令人不安的事实开始:GWT编译器的性能确实很糟糕。您可以在这里和那里使用一些技巧,但不会获得明显更好的性能。


您可以通过在您的代码中插入以下代码来对特定的浏览器进行编译gwt.xml:


<define-property name="user.agent" values="ie6,gecko,gecko1_8"></define-property>

或使用gwt 2.x语法,并且仅适用于一种浏览器:


<set-property name="user.agent" value="gecko1_8"/>

例如,这将仅针对IE和FF编译您的应用程序。如果您知道仅使用特定的浏览器进行测试,则可以使用此小技巧。


另一个选择:如果您使用多个语言环境,并且再次仅使用一个语言环境进行测试,则可以将它们全部注释掉,以便GWT将使用默认语言环境,这可以节省编译时的额外开销。


底线:您不会在编译器性能上得到数量级的提高,但是可以放轻松一些,您可以在这里和那里节省几分钟。


查看完整回答
反对 回复 2019-10-14
?
慕姐8265434

如果使用-localWorkers标志运行GWT编译器,则编译器将并行编译多个置换。这使您可以使用多核计算机的所有内核,例如-localWorkers 2将告诉编译器并行编译两个排列。您不会得到数量级的差异(并非编译器中的所有内容都是可并行化的),但是如果您要编译多个置换,这仍然是明显的加速。

如果您愿意使用GWT的主干版本,则可以对任何浏览器使用托管模式(进程外托管模式),从而可以缓解当前大多数托管模式问题。这似乎是GWT的发展方向-始终以托管模式进行开发,因为编译不太可能获得更快的幅度。


查看完整回答
反对 回复 2019-10-14

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信