Всем привет,
Подскажите алгоритм.
Есть два массива строк. Нужно определить пересекаются ли множества элементов этих массивов, т.е. есть ли в первом массиве хотя бы один элемент, который присутствует также во втором.
Дополнительные условия: оба массива короткие, примерно по семь элементов. Вызов этого алгоритма происходит порядка 10 млн раз.
Сейчас сделал так:
var uniqueWords = new HashSet<string>();
foreach (var word in arr1) {
uniqueWords.Add(word);
}
if (arr2.Any(word=> !uniqueWords.Add(word))) {
return true;
}
return false;
Вот что говорит профайлер:
System.Collections.Generic.HashSet`1.AddIfNotPresent(T) — 19 sec — 15 113 490 calls
System.Linq.Enumerable.Any(IEnumerable[TSource], Func[TSourceBoolean]) — 14 sec — 1 971 170 calls
Подскажите, как соптимизировать это дело?