ClientBundles是如何生成的?我应该缓存还是重新创建?

时间:2014-10-19 20:13:46

标签: gwt uibinder

我正在研究的特定情况是使用多个UiBinder中使用的客户端捆绑包。客户端包包含在ui:with标记中。是否为每个客户端生成了一个新的客户端捆绑包,如果是,那么性能影响是什么?

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

1 个答案:

答案 0 :(得分:2)

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

使用它们对任何对象都有意义 - 编译器将尽最大努力使最干净的代码成为可能。在没有动态调度(多个实现或子类)的情况下,它会将方法重建为静态方法,如果不需要this引用,它将编译出对这个'这个'完全。

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