Я вычисляю пересечение двух наборов отсортированных чисел в важной по времени части моего приложения. Этот расчет является самым большим узким местом всего приложения, поэтому мне нужно его ускорить.
Я попробовал несколько простых вариантов и сейчас использую это:
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();
, а затем перебирал пересечение
.
Но поскольку оба этих набора отсортированы, я чувствую, что есть лучший способ сделать это. Обратите внимание, что я не могу удалять элементы из наборов, чтобы уменьшить их. Оба набора обычно состоят примерно из 50 предметов каждый.
Пожалуйста, помогите мне, ребята, так как у меня нет много времени, чтобы сделать это. Спасибо.
ПРИМЕЧАНИЕ: Я делаю это примерно 5,3 миллиона раз. Итак, каждая микросекунда на счету.