我认为 avakar 要表达的观点是:随着现代处理能力的提高,硬盘的IO速度成为瓶颈而非哈希计算。更高效的算法并不能提升速度,因为这很可能不是最慢的点。如果你在进行一些特殊操作(例如1000轮加密),情况可能会有所不同,但如果你只是计算一个文件的哈希值,你需要加快IO速度,而不是数学计算速度。
我认为这并不重要(在相同的硬件上;但确实GPGPU是不同的,也许更快,适用于那种问题)。MD5的主要部分是复杂算术运算的复杂循环。真正重要的是编译器优化的质量。还有一个重要的问题是如何读取文件。在Linux上,mmap、madvise和readahead可能是相关的。磁盘速度可能是瓶颈(如果可以的话,请使用SSD)。而且,您确定要特别使用MD5吗?还有更简单和更快的哈希编码算法(MD4等)。但是,您的问题更多的是I/O绑定而不是CPU绑定。
我相信有许多CUDA / OpenCL算法的适应性,这应该会给您带来明显的加速。 您还可以采用基本算法并思考一下 -> 开始进行CUDA / OpenCL实现。块密码是此类型实现的完美候选者。您也可以获得其C实现,然后获取Intel C编译器的副本,并查看其效果如何。 Intel CPU中的向量化扩展对于提高速度非常惊人。