【发布时间】:2016-02-18 01:50:22
【问题描述】:
我想计算一系列大文件的 MD5 和 SHA 校验和。
每个文件大约是1GB,所以我希望尽可能快。
谁能帮忙推荐一些高效的 C++ 库?
顺便说一句,
读取文件时,fread( buffer, sizeof(char), BUFFER_SIZE, fin ),BUFFER_SIZE的大小合理?
【问题讨论】:
-
通常读取与分配单元的底层大小和/或操作系统通常使用的缓冲区大小相对应的块将提供最佳性能。通常像 4096 字节是最佳的。
-
购买一个超快的 SSD 磁盘,并在地址空间中至少有 1GB 的连续内存来映射文件。严重地。在您证明自己受 CPU 或内存总线限制(即您已经正确进行基准测试并发现这些区域需要)之前,任何合理的实现都足够了。以免你忘记你的 Knuth。我敢打赌,您几乎在所有情况下都会受到磁盘 io 的限制,除非您可以通过点击该大小文件上的 spin-spindle-faster 按钮来加快步伐,否则您选择的 lib 可能会差别不大,只要作者不是庸医。