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

Gwt clientbundle是如何生成的?我应该缓存还是重新创建?,gwt,uibinder,Gwt,Uibinder,我所看到的具体案例是在多个UIBinder中使用一个客户端包。客户端包包含在ui:with标记中。是否为每个客户机生成新的客户机包,如果是,性能影响是什么 我可以使用@UiField(provided=true)注释缓存ClientBundle,这是一个好主意吗?任何需要进行的缓存都是在内部完成的-ClientBundle实现本身会生成静态成员,以确保在完成某项操作后,不需要再次执行。这适用于ImageResource使用情况以及CssResource.ensureInjected 使用它们对任

我所看到的具体案例是在多个UIBinder中使用一个客户端包。客户端包包含在ui:with标记中。是否为每个客户机生成新的客户机包,如果是,性能影响是什么


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

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

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


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

为了补充Colin的观点,我曾经重组了一个GWT应用程序,该应用程序多年来变得非常复杂。我通过子类化活动和视图实现消除了5000多行重复代码,在必要时创建了单例,并使成员成为可能。当我重新编译应用程序时,我非常惊讶地看到,所有这些明显的改进导致编译代码大小减少了2%,而性能没有明显的改进。GWT编译器非常聪明。