у меня тут как раз стоит вопрос быстрого сравнения строк. Предположим есть 5 известных строк (хедеры), которые надо вайтлистить
У нас есть функция вида: string -> bool которая должна ответить входит ли входящая строка в вайтлист.
Есть 3 реализации:
на хешсете, в который подается StringOrdinal компаратор
на свич кейсе, который свичит по длине входящей строки в начале, и если подходит, делает стринг.компаре ординалс
и то же самое на свич експрешне (должно быть то же самое)
В итоге
хешсет - 40нс
свич кейс 4.2нс
свич експрешн - 4.6нс
код и бенчи показать не могу, чот ремоут тачка отвалилась -_-
Вопрос - какой самый быстрый способ узнать входит ли строка в некий ограниченный пул строк?
Если у тебя несколько больше строк, то тебе лучше всего trie зайдет. Это структура, которая для строк быстрее словаря работает. Как любое префиксное дерево, ее алгоритмическое время O(len)