hashlibのハッシュアルゴリズム、計算速度ってどのぐらい差があるの選手権
雑に図ってみた (Python 3.6.4)
対象ファイル: 画像ファイル約20000件(2GB弱)
アルゴリズム | 処理時間(秒) ファイル読み込み時間は含まず |
---|---|
md5 | 2.536 |
sha1 | 1.798 |
sha256 | 3.873 |
sha384 | 2.591 |
sha512 | 2.626 |
まとめ
sha1はええ。md5そんな速くねえ。sha512とそんな変わんねえ。
コード
import hashlib, sys, pathlib, time sizes = [] times = [] HASH = gatattr(hashlib, sys.argv[1]) def h(b): f = time.time() h = HASH(b).digest() times.append(time.time()-f) sizes.append(len(b)) imgs = pathlib.Path(sys.argv[2]).glob("*.jpg") for i in imgs: h(i.read_bytes()) print(len(sizes), sum(sizes), sum(times), sum(times)/len(times))