Я использую класс FilteredTree для фильтрации содержимого моего TreeViewer, но поскольку сейчас есть много данных, когда я набираю что-то для фильтрации данных, он зависает, прежде чем я введу свою следующую букву. Есть ли способ улучшить производительность.Улучшение производительности FilteredTree
0
A
ответ
0
Одним из способов смягчения медленного фильтра было бы увеличить задержку между запуском фильтра. Это позволяет пользователям вводить несколько символов перед повторным запуском фильтра.
В вашем подклассе FilteredTree переопределите getRefreshJobDelay(). По умолчанию используется 200 мс, возможно, более 500-800 мс подходит для вашего варианта использования?
Для примера рассмотрим случай использования в Eclipse PDE of a filtered tree:
@Override
protected long getRefreshJobDelay() {
// Prolonged job delay time is required because of the attribute search being more costly in nature.
// This can block input to the filter text severely. Thus it shouldn't happen when typing slowly.
// The delay of 1500ms is bypassed by some actions that use the filter text to initiate searches or clear the text.
long delay = (fBypassFilterDelay) ? 0 : REFRESHJOB_DELAY_TIME;
setBypassFilterDelay(false); // reset afterwards
return delay;
}
Где REFRESHJOB_DELAY_TIME является 1200ms.
Если вы хотите ускорить реализацию фильтра, возможно, это поможет?