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 шт):
Вообще, насколько я помню, Contains работает при помощи суффиксного дерева, то есть работает за О от длинны фильтра - это довольно быстрый алгоритм. Правда, в начале время тратится на построение суффиксного дерева.
К тому же, IL тоже щтука умная, и true будет возвращено при первом же true - результате в конкатенации по "или".
Отсюда простое соображение: если какая либо из строк в выражении с большей вероятностью попадает в выборку - то есть,содержит подстроку filter - то переместите это сравнение ближе к началу выражения.
А вообще - надо посмотреть на картину целиком,может,там много раз запращивается вычисление одного и того же.
К примеру, если ни одна из строк, в котрых ищется filter, не менялась, и сам фильтр не менялся, то второй раз вычислять не надо. можно вернуть результат предыдущего вычисления.
Но вообще под Вашим вопросом гораздо более опытный человек оставил правильное замечение - немного конкретики не помешало бы
К тому же, если я ощибся в своих рассуждениях - я буду благодарен за замечания и исправления.