【发布时间】:2010-05-21 06:44:20
【问题描述】:
当我将 RMI 代理引用添加到 Java Swing JList 组件时,我遇到了巨大的性能问题。
我正在从服务器检索带有 RMI 的用户 Profiles 列表。检索本身只需要一秒钟左右,因此在这种情况下是可以接受的。但是,当我尝试将这些代理添加到 JList 时,在自定义 ListModel 和 CellRenderer 的帮助下,添加大约 180 个对象需要 30-60 秒。由于是用户名列表,最好按字母顺序显示。
最大的性能损失是当我将元素添加到 ListModel 时对其进行排序。由于列表总是会被排序,我选择使用内置的Collections.binarySearch()来找到下一个要添加的元素的正确位置,比较器使用Profile接口定义的两种方法,即@ 987654327@和getLastName()。
有什么方法可以加快这个过程,还是我只是以错误的方式实现它?或者这是 RMI 的“特性”?我真的很想能够在本地缓存远程对象的一些数据,以最大限度地减少远程方法调用。
更新和可能的解决方案: 我创建了实现远程接口并包含对远程对象的引用的本地类。速度提升很明显,现在可以无缝运行(至少到目前为止)。我希望这同样适用于我们在应用程序中使用的其他接口。感谢您的意见,我认为它们对我有帮助。
【问题讨论】:
-
拨打一个电话以获取不同的配置文件,而不是多次调用。这会有所帮助。
-
关键是你也缓存了firstName和lastName吧?否则我很惊讶它有帮助。
标签: java performance rmi