Я вычисляю пересечение 2 наборов отсортированных чисел в критически важной части моего приложения. Этот расчет является самым большим узким местом для всего приложения, поэтому мне нужно его ускорить.
Я пробовал кучу простых опций и в настоящее время использую это:
foreach (var index in firstSet)
{
if (secondSet.BinarySearch(index) < 0)
continue;
//do stuff
}
Оба firstSet
и secondSet
имеют тип List.
Я также пытался использовать LINQ:
var intersection = firstSet.Where(t => secondSet.BinarySearch(t) >= 0).ToList();
а затем перейдя через intersection
.
Но поскольку оба этих набора отсортированы, я чувствую, что есть лучший способ сделать это. Обратите внимание, что я не могу удалить элементы из наборов, чтобы сделать их меньше. Оба набора обычно состоят примерно из 50 элементов.
Пожалуйста, помогите мне, ребята, потому что у меня нет много времени, чтобы сделать это. Спасибо.
ПРИМЕЧАНИЕ. Я делаю это примерно 5,3 миллиона раз. Таким образом, каждая микросекунда считается.