c# Оптимизация сортировки линии

Особо нет идей, как это улучшить, потому что для 1000+ элементов уж больно долго работает. Уверен, что есть способ лучше, просто знаний не хватает в этом отношении

public bool SortFilterLine(string filter)
{
    return time.Contains(filter) || direction.Contains(filter) || roomCopy.Contains(filter) || userCopy.Contains(filter)
        || objectContainer.Contains(filter) || command.Contains(filter) || data.Contains(filter);
}

Ответы (1 шт):

Автор решения: S.H.

Вообще, насколько я помню, Contains работает при помощи суффиксного дерева, то есть работает за О от длинны фильтра - это довольно быстрый алгоритм. Правда, в начале время тратится на построение суффиксного дерева.

К тому же, IL тоже щтука умная, и true будет возвращено при первом же true - результате в конкатенации по "или".

Отсюда простое соображение: если какая либо из строк в выражении с большей вероятностью попадает в выборку - то есть,содержит подстроку filter - то переместите это сравнение ближе к началу выражения.

А вообще - надо посмотреть на картину целиком,может,там много раз запращивается вычисление одного и того же.

К примеру, если ни одна из строк, в котрых ищется filter, не менялась, и сам фильтр не менялся, то второй раз вычислять не надо. можно вернуть результат предыдущего вычисления.

Но вообще под Вашим вопросом гораздо более опытный человек оставил правильное замечение - немного конкретики не помешало бы

К тому же, если я ощибся в своих рассуждениях - я буду благодарен за замечания и исправления.

→ Ссылка