1. ホーム
  2. c#

[解決済み] .NETを使用して2つのファイルを高速に比較する方法は?

2022-05-13 13:34:28

質問

代表的な取り組み は、FileStreamでバイナリを読み込んで、バイト単位で比較することを推奨します。

  • CRCのようなチェックサム比較の方が速いですか?
  • ファイルのチェックサムを生成できる .NET ライブラリはありますか?

どのように解決するのですか?

チェックサム比較は、バイト単位の比較よりも遅くなる可能性が高いです。

チェックサムを生成するためには、ファイルの各バイトを読み込み、それに対して処理を行う必要があります。 そして、これを2番目のファイルに対して行う必要があります。 この処理は、比較チェックよりも確実に遅くなります。

チェックサムの生成については、cryptography クラスを使えば、簡単にできます。 以下は MD5チェックサムを生成する短い例 をC#で作成しました。

しかし、quot;test" または "base" の場合のチェックサムを事前に計算することができれば、チェックサムはより速く、より理にかなっている場合があります。 既存のファイルがあり、新しいファイルが既存のファイルと同じかどうかを確認する場合、既存のファイルのチェックサムを事前に計算することは、新しいファイルに対して DiskIO を 1 回だけ実行する必要があることを意味します。 これは、バイト単位の比較よりも高速になる可能性があります。