我应该重用gwt实例(注册表对象、加载程序)还是每次都获取新副本?

我应该重用gwt实例(注册表对象、加载程序)还是每次都获取新副本?,gwt,Gwt,我是gwt的新手,很抱歉这个简单的问题 我可以每次调用Registry.get(“id”),或者我可以在字段中缓存返回的值,有什么更好(Registry.get(“id”)有多快/慢?) 对于RpcProxy实例和不同的loader实例,类似的问题。这实际上是一个好问题。您应该始终尝试重用实例,而不是创建新实例,尤其是使用GWT客户端Java代码,该代码在运行时变成Javascript。如果你不小心的话,在JS中实例化对象的开销(即使你从GWT得到了所有的优化)可能会很快变得难以处理。你自己试试

我是gwt的新手,很抱歉这个简单的问题

我可以每次调用
Registry.get(“id”)
,或者我可以在字段中缓存返回的值,有什么更好(Registry.get(“id”)有多快/慢?)


对于
RpcProxy
实例和不同的
loader
实例,类似的问题。

这实际上是一个好问题。您应该始终尝试重用实例,而不是创建新实例,尤其是使用GWT客户端Java代码,该代码在运行时变成Javascript。如果你不小心的话,在JS中实例化对象的开销(即使你从GWT得到了所有的优化)可能会很快变得难以处理。你自己试试看,有一个200个gwt标签的列表,一次只显示10个,而每次值改变时只实例化10个并重用它们,你会看到浏览器渲染所花时间的不同。

代价不是JS对象,而是DOM元素(或者操纵文档)。所以,小部件的实例化成本很高,应该“回收”,但其他东西都很便宜。我同意Thomas的观点。此外,我不建议“总是重用实例”-创建新实例通常会更好,因为这样可以提高代码的可读性/可跟踪性(特别是当您可以使对象不可变时),缩短代码(仅构建代码),更容易重构,所以我应该试着重用我的实例,但如果这影响了可读性,可以重新启动一个实例吗?注意:要实例化新的
loader
我需要安装很多东西-rpcproxy等。对我的回答发表评论的人说,在重用实例时,你应该主要关注改变DOM的对象(基本上是GWT小部件的后代),因为它们是最重的。对于其他人,你应该在代码可读性和实例数量之间取得平衡。如果你打算重用,你可能想看看Guava中的Supplier接口和Suppliers类。这些是GWT兼容的,并提供了用于记录类的有用静态方法。什么是
注册表
?你是说
RootPanel
<代码>根面板s被缓存,但每次都会验证缓存。否则,大多数
GWT.create()
d对象的创建成本很低,因为它们实际上生成的大多是静态实现,因此实例由编译器优化。你从哪里可以找到像“缓存每次都经过验证”这样的小宝石呢?@Andrei:说真的,这是很棒的东西。它是否有文档记录,或者Thomas是Google GWT开发人员?