У меня возникают огромные проблемы с производительностью, когда я добавляю ссылки RMI-прокси на JList-компонент Java Swing.
Я получаю список пользователей Profile
с RMI с сервера. Сам поиск занимает всего секунду или около того, так что это приемлемо в данных обстоятельствах. Однако, когда я пытаюсь добавить эти прокси в JList
с помощью пользовательских ListModel
и CellRenderer
, для добавления около 180 объектов требуется от 30 до 60 секунд. Поскольку это список имен пользователей, желательно представлять их в алфавитном порядке.
Наибольшее снижение производительности происходит, когда я сортирую элементы по мере их добавления в ListModel. Поскольку список всегда будет отсортирован, я решил использовать встроенную Collections.binarySearch()
, чтобы найти правильную позицию для следующего добавляемого элемента, а компаратор использует два метода, которые определяются интерфейсом Profile
, а именно getFirstName()
и getLastName()
.
Есть ли способ ускорить этот процесс, или я просто неправильно его реализую? Или это «особенность» RMI? Я бы очень хотел иметь возможность кэшировать некоторые данные удаленных объектов локально, чтобы минимизировать вызовы удаленных методов.
Обновление и возможное решение: Я создал локальные классы, которые реализуют удаленные интерфейсы и содержат ссылку на удаленные объекты. Повышение скорости заметно, и теперь оно работает без всяких проблем (по крайней мере, пока). Я надеюсь, что это работает так же хорошо для других интерфейсов, которые мы используем в нашем приложении. Спасибо за вклад, который, как мне кажется, помог мне.