4

是否有任何 linux 命令行实现在大文件(< 2GB)上生成 sha1 时表现非常出色?

我玩过“openssl sha1”,需要几分钟才能获得 2GB 文件的 sha1:/.

4

5 回答 5

7

在我的机器上,对于一个 1GB 的文件,有足够的内存在第一次运行后将整个文件缓存在内存中:

sha1sum: 3.92s
openssl sha1: 3.48s
python hashlib.sha1: 3.22s

获取 2GB 文件的 sha1 需要几分钟

那里有问题,除非你使用非常慢的旧硬件。即使在第一次运行时,文件是直接从磁盘读取的,在我的机器上每次演出只需要“openssl sha1”大约 20 秒。您是否普遍存在 I/O 缓慢问题?

于 2009-03-13T03:50:00.237 回答
5

我不认为 SHA 算法可以针对大小进行优化,因为它在固定大小的块上运行,并且计算不能并行完成。似乎小文件上最快的实现也将是大文件上最快的。

于 2009-03-20T20:27:12.023 回答
3

您的问题可能是磁盘 I/O。旧的 2.0GHz Core Duo 处理器上的基本 SHA1 实现可以以 100MiB/s 的速度处理 /dev/zero - 比通常与此类系统配对的大多数硬盘驱动器更快。

向我们展示您当前看到的速度(以及在什么规格的硬件上)。

于 2009-03-13T03:38:34.883 回答
3

如果您不是特别需要 sha1 但正在寻找对大文件进行校验和,则 Sha512sum 对于大文件会更快,因为它会读取更大的块

于 2012-01-18T17:50:43.293 回答
1

sha1sum是我用来计算 SHA-1 校验和的东西……它被设计成只做一件事,所以我希望它尽可能快地完成它。不过,我没有任何 2GB 文件可以对其进行基准测试:-(

编辑:在对 ISO 映像进行一些测试之后,我的系统上的限制因素似乎是磁盘 I/O 速度——这并不奇怪,尽管我觉得之前没有想到这一点有点傻。一旦纠正,似乎openssl的速度大约是sha1sum的两倍......

于 2009-03-13T03:30:02.267 回答