如何提高逐字节比较文件的性能?

yjzhg 2006-10-03 03:51:45
此比较探讨两文件, 不在文件名、 位置、 日期、 时间或其他属性的内容。

我是比较两个文件夹下的文件,目前是用两个for循环来做的?但是性能很是问题,每个文件夹下面都是最少几千个文件.....性能很成问题...哪位大哥有好的办法?

http://support.microsoft.com/?kbid=320346

参考MSDN的比较方法,同时我还限制了文件的大小,小于10K的文件不做比较..但是性能还是很差。。
...全文
358 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
yjzhg 2006-10-08
  • 打赏
  • 举报
回复
但是文件不是我自己出成的..
chaircat 2006-10-08
  • 打赏
  • 举报
回复
先比较大小,大小不同肯定不同(废话)...
然后使用文件流,逐字节比较,只要一个不同就马上返回不同...
这是单次比较最快...
生成文件Hash,需要比较的时候直接比较Hash,这是多次比较最快...
viena 2006-10-08
  • 打赏
  • 举报
回复
修改文件时生成md5哈希值
Nara 2006-10-08
  • 打赏
  • 举报
回复
学习ParadiseX,呵呵
股神 2006-10-08
  • 打赏
  • 举报
回复
yeerh 2006-10-08
  • 打赏
  • 举报
回复
先将所有文件的Hash放入HashTable...
再用一个类来监视文件夹..
文件一但改变,就取新的HASH更换旧Hash,

比较的时候再比较Hash...
要是有多次比较这样可能是最快的了..

wwqna 2006-10-08
  • 打赏
  • 举报
回复
你随机100位byte来比较就是了,一个个的比,会死人的
xingyaohua 2006-10-08
  • 打赏
  • 举报
回复
yq_net 2006-10-08
  • 打赏
  • 举报
回复
xuexi
jimh 2006-10-04
  • 打赏
  • 举报
回复
最大的性能问题不在两个for循环里,几千个虽然很慢,单也不是不能忍受的,关键还是按字节比较文件的内容,楼上的提供了一个好办法,使用md5来比较是否相同,更进一步,生成文件的同时一起生成md5密匙,这样比较是更方便,速度更快了。
ParadiseX 2006-10-04
  • 打赏
  • 举报
回复
如果楼主只是希望看两个文件是不是完全一致,我倒是有一个好方法,这个我也是在项目里常用的。
你把两个文件都用MD5算法加密(此算法.NET FCL已经包括),然后将得到的两个128位密钥进行比较,如果一致就说明文件是一致的了。速度还是挺快的,楼主可以尝试一下
yjzhg 2006-10-04
  • 打赏
  • 举报
回复
UP
bruttle 2006-10-03
  • 打赏
  • 举报
回复
将两文件夹下文件按文件大小建HashTable,当然每次加入的键都要判断一下其是否已存在,如果存在,如加入特殊标识,这样只在长度较小的HashTable中遍历一次,看其在另一表中是否存在,如果存在则比较其内容,这样循环次数就比较少,因为大小相同的文件本身就少。
  • 打赏
  • 举报
回复
顶帖才是硬道理
youyu529 2006-10-03
  • 打赏
  • 举报
回复
UP

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧