在计算大文件的 md5 和时,我看到一个 cpu 核心无论花费多长时间都跳到 100%,而其他所有核心都处于空闲状态。
我对 md5 的初步理解是整个过程是完全线性的,其中值依赖于之前读取的所有值,我们无法使其成为多线程。这是真的?
或者有没有办法将文件分成多个部分,使用多核计算多个部分的<something> ,然后将这些<something>值组合到最终的 md5 中?
我们用来计算 md5sum 的库是http://libmd5-rfc.sourceforge.net/,但如果可以跨多个核心打破 md5sum 以更快地完成,我会切换到另一个库。
(注意:改成 md5 以外的东西不是问题,也不能因为这个接口的其他封闭系统而做。这个问题也不是关于使用 md5 的安全性的问题。)