逐字节比较文件还是读取所有字节?

Pri*_*rix 4 c# benchmarking checksum compare

我遇到了这段代码http://support.microsoft.com/kb/320348,这使我想知道比较两个文件以确定它们是否不同的最佳方法是什么。

主要思想是优化我的程序,该程序需要验证文件是否相等,以创建已更改文件和/或要删除/创建的文件的列表。

目前,我正在比较文件大小是否匹配,我将进入2个文件的md5校验和,但是在查看了此问题开始处链接的代码后,让我想知道是否真的值得使用它创建2个文件的校验和(基本上是在获取所有字节之后)?

另外,我还应该进行哪些其他验证以减少检查每个文件的工作?

Ali*_*tad 5

将两个文件都读入为读取而优化的小缓冲区(4K或8K)中,然后比较为比较而优化的内存中的缓冲区(逐字节)。

这将为您提供在所有情况下(在开始,中间或结束时有所不同)的最佳性能。

当然,第一步是检查文件长度是否不同,如果是这种情况,文件确实不同。