(これは、Powershellで実行していることを前提としていますが、これらの手法はすべての言語に適用されます。)
最初にファイルサイズを確認することをお勧めします。
最初にこれを行ってください、それは速いです!
if ((gci $file1).Length -ne (gci $file2).Length)
{
Write-Host "Files are different!"
}
else
{
# Same size, so compare contents...
}
最後に、本格的な比較を行うことができます。PowerShellを使用している場合は、Compare-Object
(エイリアスdiff
)を確認してください。例えば、
if (diff (gc $file1) (gc $file2))
{
Write-Host "Files are different!"
}
http://keestalkstech.blogspot.com/2010/11/comparing-two-files-in-powershell.htmlに示すように、バッファリングされたバイト間の比較を行う方が速い場合があります。
代替案:
MD5の比較は、実際にはバイト間の比較よりも遅い場合があります。ファイルを読み込む必要があるだけでなく、ハッシュを取得するために計算を実行する必要もあります。少なくとも、古いファイルのハッシュをキャッシュすることで最適化できます。つまり、I/Oを半分に節約できます。
データベーステーブルをエクスポートしているため、ほとんどのデータベースは最後に行を追加します。これがあなたのケースであり、単に追加していて更新していないことを確認する必要があります。その場合は、ファイルの最後の行を比較するだけです。たとえば、最後の4K、または行サイズがどれだけ大きいか。