2014-10-19 46 views
0

我正在看的特定情况是在多个UiBinder中使用的客户端捆绑包。客户端软件包包含在ui:with标记中。是否为每个客户端生成一个新的客户端软件包,如果有的话,性能影响是什么?ClientBundles如何生成?我应该缓存还是重新创建?

我可以使用@UiField(provided = true)注释来缓存ClientBundle,这是个好主意吗?

回答

2

需要完成的任何缓存都是在内部完成的 - 有一些由ClientBundle实现自身生成的静态成员,以确保在完成某些操作后不需要再次完成。这适用于ImageResource使用以及CssResource.ensureInjected。

将它们用作任何对象的意义 - 编译器将尽最大努力使最干净的代码成为可能。如果没有机会进行动态分派(多个实现或子类),那么它将重建方法为静态方法,如果不需要参考,它将完全编译“this”的引用。

总之,编写可读代码,编译器会担心它。如果您担心,请使用Chrome中出色的CPU和内存分析工具来比较策略,但如果您发现任何差异,我会很惊讶。

+1

为了增加科林的观点,我曾经重组了一个GWT应用程序,这些应用程序多年来变得非常复杂。我通过子类化Activities和View实现消除了超过5,000行的重复代码,在必要时创建了单例,并且使成员静态化成为可能。当我重新编译应用程序时,我非常惊讶地发现,所有这些明显的改进都使编译代码大小减少了2%,并且没有明显的性能改进。 GWT编译器非常聪明。 – 2014-10-20 05:37:04

相关问题