Ничто из этого не кажется мне подходящим - HashSet<string>
звучит так, как будто это может быть лучшим подходом для меня.
Да, .NET должен вычислять хеш-код для каждой строки - вопрос в том, займет ли это столько времени, сколько потребуется проверки на равенство с каждой из сотен строк в наборе кандидатов.
Как и во всех вопросах производительности, вы должны проверить это, а не угадывать. Например, если все строки имеют разную длину и все они длинные, то Equals
будет дешевым для каждого кандидата, а GetHashCode
может занять много времени. Однако, если все ваши строки имеют длину 10, начиная с одних и тех же 6 символов, скажем, тогда GetHashCode
будет достаточно дешевым, но каждая проверка на равенство строк должна будет проверять все эти общие префиксные символы. Что из этого больше похоже на вашу реальную ситуацию? Что показали ваши тесты? Как быстро вам нужно это будет?