每当某个下载任务完成时,它便立即自动Hash,几乎把整个硬盘速度都给占去了,这样子整台机的变得近乎没有响应。
我于是觉得,Hash这个事情应该交由用户来手动设置,可以在机子较空闲时才Hash。
我有种冲动想自己尝试改一改源码实现这个功能?方法得当应该找到位置应该不难的吧?望各位大牛给点指点。
又或是已经有人在做这个事情或是已经完成,敬请交流共享。谢谢!
相关主题
1 文件下载完成后除了需要计算hashlist外,还需要计算整个文件的AICH hash Tree,以方便整个分享网络中其它用户下载了一个错误Part后可以纠错数据
2 不考虑分享給其它用户,只考虑下载的话,很容易改
3 我认为改的思路大体上应该是这样
1) 先修改 CPartFile::FlushBuffer() ,每下载完一个hash成功的Part,同时要把该Part的AICH Hash Tree 也计算出来(这样避免下载完的时候计算全部AICH hash Tree)
2) 然后修改 int CAddFileThread::Run() 函数,在这个函数中针对下载的Part文件就没必要重头完整计算hashlist 和 整颗 AICH Hash Tree了,这样就加快了下载完成时候的hash计算
我也遇到这个问题,因为机子是比较老的本本,内存小,硬盘带宽也不高,上次有3个200M左右的动漫同时下载完了...内个速度,天呐..第一个文件Hash不到一半,第二个文件下载完成了,开始Hash,这速度就已经开始慢了不少了,等第一个文件Hash到70%左右,第二个文件Hash了30%多,第三个文件下好了- -...然后就是艰难的Hash&Copy(本人临时目录和完成目录不在一个分区上)。总共三个文件全部完成Hash+Copy工作花了将近40分钟...所以我也觉得Hash过程应该分批,或者是让用户自主选择时间完成Hash工作,或者允许暂停Hash,以免多个任务同时Hash+Copy降低效率。