ハッシュ関数の速度が気になったのでメモ。
古典的(?)なmd5とsha1とmurmurhash3を比較する。それぞれ10万回を100セット実行して結果を比較。実行したマシンはMacBook Pro Late 2016でIntel Core i7 2.6GHz Quad Coreのやつ。
ハッシュ関数 | 時間(s) |
---|---|
md5 | 12.7691998482 |
sha1 | 13.9324979782 |
murmurhash3 | 2.75016593933 |
比較用のコードはこれ。
# !/usr/bin/env python
import timeit
def mmh3_test():
import mmh3
for i in range(0, 100000):
mmh3.hash(str(i))
def md5_test():
import hashlib
for i in range(0, 100000):
hashlib.md5(str(i)).hexdigest()
def sha1_test():
import hashlib
for i in range(0, 100000):
hashlib.sha1(str(i)).hexdigest()
if __name__ == '__main__':
import timeit
print(timeit.timeit("mmh3_test()", setup="from __main__ import mmh3_test", number=100))
print(timeit.timeit("md5_test()", setup="from __main__ import md5_test", number=100))
print(timeit.timeit("sha1_test()", setup="from __main__ import sha1_test", number=100))