Span<T> supera memcmp: ganhos de desempenho massivos em comparações de array de bytes .NET

2025-03-30
Span<T> supera memcmp: ganhos de desempenho massivos em comparações de array de bytes .NET

Esta publicação compara várias maneiras de comparar arrays de bytes no .NET, incluindo `memcmp`, loop, `Enumerable.SequenceEqual` e `Span.SequenceEqual`. Os resultados mostram que `Span.SequenceEqual` oferece o melhor desempenho no .NET 8 e posterior, superando significativamente `memcmp` e o loop tradicional, mesmo no .NET Framework. Para arrays pequenos, o loop é o mais rápido, mas a vantagem de `Span.SequenceEqual` aumenta drasticamente com o tamanho do array. O autor recomenda o uso de `IEnumerable.SequenceEqual` no .NET 8+ e `Span.SequenceEqual` no .NET Framework, evitando `memcmp` e implementações personalizadas.