xxhash-rustとmd5コマンドとshasumコマンドの速度計測
以下のRust実装のxxh3とmacOSに入っていたmd5コマンドとshasumコマンド(sha1)との簡単な速度比較。 xxhash-rust 0.8.12を使って標準入力のハッシュ値を取得する簡単な実装をcargo build --releaseした。 code:rs
use std::hash::Hasher as _;
fn main() -> std::io::Result<()> {
let mut xxh3 = xxhash_rust::xxh3::Xxh3::new();
std::io::copy(&mut std::io::stdin(), &mut xxh3)?;
let digest = xxh3.finish();
println!("{digest:x}");
Ok(())
}
cat
code:console
$ head -c 9999999999 /dev/zero | time cat > /dev/null
1.59 real 0.04 user 0.77 sys
xxhash-rust xxh3
code:console
$ head -c 9999999999 /dev/zero | time ../target/release/xxhash-stdin
fd851bc29b3e1772
2.23 real 0.50 user 0.96 sys
shasum (sha1)
code:console
$ head -c 9999999999 /dev/zero | time shasum
468e88e6d52837267e85e051da1c296cc49002d6 -
16.57 real 15.64 user 0.85 sys
md5
code:console
$ head -c 9999999999 /dev/zero | time md5
df50221367ab73038d56c5ffcf962c2c
18.10 real 17.71 user 0.37 sys
(ちなみにxxhash-rustにはコンパイル時にハッシュ値を求めるconst版のconst_xxh3()もある)