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