Cómo recorrer dos colecciones en paralelo sin asignaciones en el heap en C#
Enumerable.Zip asigna entre 144 y 208 bytes por llamada y es unas 10 veces más lento que un bucle simple. Para arrays y listas, un bucle for sobre dos spans recortados a la misma longitud no asigna nada y es la opción más rápida; si quieres la sintaxis de foreach, un pequeño enumerador zip ref struct queda a menos del 25% de distancia. Medido en .NET 10.0.10 y .NET 11 RC 3.