C # intersección más rápida de 2 conjuntos de números ordenados

Estoy calculando la intersección de 2 conjuntos de números ordenados en una parte crítica de mi aplicación. Este cálculo es el mayor cuello de botella de toda la aplicación, así que necesito acelerarlo.

He probado un montón de opciones simples y actualmente estoy usando esto:

foreach (var index in firstSet)
{
    if (secondSet.BinarySearch(index) < 0)
        continue;

    //do stuff
}

AmbosfirstSet ysecondSet son del tipo Lista.

También he intentado usar LINQ:

var intersection = firstSet.Where(t => secondSet.BinarySearch(t) >= 0).ToList();

y luego recorriendointersection.

Pero como ambos conjuntos están ordenados, siento que hay una mejor manera de hacerlo. Tenga en cuenta que no puedo eliminar elementos de conjuntos para hacerlos más pequeños. Ambos conjuntos suelen constar de unos 50 artículos cada uno.

Por favor, ayúdenme, muchachos, ya que no tengo mucho tiempo para hacer esto. Gracias

NOTA: Estoy haciendo esto aproximadamente 5,3 millones de veces. Entonces cada microsegundo cuenta.

Respuestas a la pregunta(5)

Su respuesta a la pregunta