是否有任何linux命令行实现在大文件(< 2GB)上生成sha1的效果非常好?
我玩'openssl sha1'并且需要几分钟才能获得2GB文件的sha1:/。
答案 0 :(得分:7)
在我的机器上,对于1GB的文件,有足够的内存使第一次运行后整个文件缓存在内存中:
sha1sum: 3.92s
openssl sha1: 3.48s
python hashlib.sha1: 3.22s
获取2GB文件的sha1需要几分钟
那时候出现了问题,除非你使用的是非常慢的旧硬件。即使在第一次运行时,文件是直接从光盘读取的,在我的机器上每次演出只需要20s左右的'openssl sha1'。您是否通常会遇到缓慢的I / O问题?
答案 1 :(得分:3)
您的问题可能是磁盘I / O.旧的2.0GHz Core Duo处理器上的基本SHA1实现可以100MiB / s处理/ dev / zero - 比通常与这种系统配对的大多数硬盘驱动器更快。
向我们展示您目前看到的速度(以及规格硬件)。
答案 2 :(得分:3)
我认为SHA算法不能针对大小进行优化,因为它在固定大小的块上运行,并且计算不能并行完成。似乎小文件上最快的实现也是大文件中最快的实现。
答案 3 :(得分:3)
如果你不是特别需要sha1但是正在寻找校验和大文件,那么对于大文件来说Sha512sum会更快,因为它读取的是更大的块
答案 4 :(得分:1)
sha1sum
是我用来计算SHA-1校验和的...它的目的只是做一件事,所以我希望它尽可能快地完成它。我没有任何2GB文件可以对它进行基准测试: - (
编辑:在对ISO映像进行一些测试之后,看起来我系统上的限制因素是磁盘I / O速度 - 这并不奇怪,虽然我觉得有点傻到没想到。一旦得到纠正,似乎openssl的速度大约是sha1sum的两倍......