Span<T>がmemcmpを凌駕:.NETにおけるバイト配列比較のパフォーマンスの大幅向上

2025-03-30
Span<T>がmemcmpを凌駕:.NETにおけるバイト配列比較のパフォーマンスの大幅向上

この記事では、`memcmp`、ループ、`Enumerable.SequenceEqual`、`Span.SequenceEqual`といった様々な方法を用いた.NETにおけるバイト配列比較のパフォーマンスをベンチマークしています。その結果、.NET 8以降では`Span.SequenceEqual`が最高の性能を示し、`memcmp`や従来のループによる比較方法を大きく上回ることが分かりました。小さな配列ではループが最も高速ですが、配列サイズが大きくなるにつれて`Span.SequenceEqual`の優位性が顕著になります。筆者は、.NET 8以降では`IEnumerable.SequenceEqual`を、.NET Frameworkでは`Span.SequenceEqual`を使用することを推奨し、`memcmp`や独自実装による比較方法は避けるべきだと結論付けています。