- 已关闭。**此问题为not reproducible or was caused by typos。当前不接受答案。
这个问题是由打字错误或无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
16小时前关门了。
Improve this question
我有一个大于1T的文件,我需要计算它的md5,但是速度太慢,需要很多时间,我想知道有没有什么方法可以加快进度?
现在我的代码是这样的
f,_:=os.Open(file)
hash:=md5.New()
io.Copy(hash,file)
return hex.EncodeToString(hash.sum(nil),nil)
2条答案
按热度按时间yvfmudvl1#
我有一些大胆的想法,希望他们能帮助提出更多有用的想法。
由于IO较差(如从磁盘获取10MB数据)或CPU计算繁重,因此通常会很慢:
我们可以:
糟糕的IO想法:
1.我将磁盘换成SSD或其他流技术(比如Kafka?我知道它是分区的,并且可以非常快地将数据流加载到内存中),这样可以减少IO延迟
1.先压缩原始文件,然后在内存中解压缩,然后计算md5。这样可以减少IO延迟,但会给CPU带来额外的工作。如果你真的不在乎它是否被压缩,那么就计算压缩文件的md5。
繁重CPU计算思想:
1.使用更好的CPU(如果这种情况经常发生,我认为您可以要求更好的CPU)
1.你可以用GPU计算某些东西,有时它比CPU快得多。
fnvucqvd2#
如果md5校验和不是业务需求,您可以尝试使用xxHash运行基准测试来比较速度