2015-09-28 3 views
0

Я использую класс FilteredTree для фильтрации содержимого моего TreeViewer, но поскольку сейчас есть много данных, когда я набираю что-то для фильтрации данных, он зависает, прежде чем я введу свою следующую букву. Есть ли способ улучшить производительность.Улучшение производительности FilteredTree

ответ

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.

Если вы хотите ускорить реализацию фильтра, возможно, это поможет?