ファイル比較はプログラミングにおける基本的なタスクです。通常、最も簡単な方法は、FileStream 経由でバイナリ データを読み取り、バイトごとに比較することです。しかし、.NET エコシステムにはもっと効率的なアプローチはないのでしょうか?
バイトごとの比較に代わる有望な代替手段は、チェックサム比較です。 CRC (巡回冗長検査) などのチェックサムは、ファイルの内容の簡単な表現を提供します。通常、2 つのチェックサムを比較する方が、ファイル全体を読み取って比較するよりも高速です。
.NET Framework には、ファイルのチェックサムを生成できるライブラリがいくつか用意されています。 MD5 (メッセージ ダイジェスト 5) は、128 ビットのチェックサムを生成する一般的に使用されるハッシュ アルゴリズムです。 MD5CryptoServiceProvider クラスを使用して、ファイルの MD5 チェックサムを計算できます。
さまざまなファイル比較手法のパフォーマンスを評価するには、次の実装を検討してください:
<code>static bool FilesAreEqual_OneByte(FileInfo first, FileInfo second) { // ... }</code>
<code>static bool FilesAreEqual_Hash(FileInfo first, FileInfo second) { // ... }</code>
<code>static bool FilesAreEqual(FileInfo first, FileInfo second) { // ... }</code>
最適化されたバイトごとの比較により、一度に大きなバイト ブロック (64 バイト) を読み取って比較し、パフォーマンスを向上させます。
100MB のビデオ ファイルを使用した実証テストでは、次のベンチマーク結果が得られました:
これらの結果は、チェックサム比較は最速のパフォーマンスを提供しますが、競合の問題が発生する可能性があるため、常に適切であるとは限らないことを示しています。最適化されたバイトごとの比較により、速度と精度の間の合理的なトレードオフが実現します。
以上が.NET にはバイトごとより効率的なファイル比較方法はありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。