当我将RMI代理引用添加到Java Swing JList组件时,我遇到了巨大的性能问题。我正在从服务器中检索具有RMI的用户Profile的列表。检索本身仅需一秒钟左右,因此在这种情况下是可以接受的。但是,当我尝试在自定义JList和ListModel的帮助下将这些代理添加到CellRenderer时,大约需要30-60秒才能添加大约180个对象。由于它是用户名列表,因此最好按字母顺序显示。当我将元素添加到ListModel时,对它们进行排序是对性能的最大影响。由于将始终对列表进行排序,因此我选择使用内置的Collections.binarySearch()查找要添加的下一个元素的正确位置,并且比较器使用Profile接口定义的两种方法,即和getFirstName()。有什么方法可以加快这个过程,还是我只是以错误的方式实现了它?还是这是RMI的“功能”?我真的很希望能够在本地缓存远程对象的某些数据,以最大程度地减少远程方法的调用。更新和可能的解决方案:我创建了实现远程接口并包含对远程对象的引用的本地类。速度增强是显而易见的,并且现在似乎效果不佳(至少到目前为止)。我希望这对于我们在应用程序中使用的其他接口同样有效。感谢您提供的指导意见。 最佳答案 我认为您需要将显示字段添加到您的Profile对象,并将其与配置文件一起返回。将整个概要文件带回到一个检查器视图中很好,但是如果您将它们带入概述视图中,则应将它们带回到初始查询中。关于java - 使用带有Swing组件的RMI代理,性能不佳,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2853926/
10-12 06:26