Performance: hash, md5, sha, hmac...
Verfasst: Donnerstag 28. Juni 2007, 08:36
Ich wollte mal wissen, wie schnell die verschiedenen Hash Funktionen in Python v2.4 sind.
hmac kann man eigentlich ganz vergessen. Der ist so langsam das es keinen Sinn macht, diesen mit zu testen. Ansonsten dauert es ewig oder man muß die loop Anzahl so niedrig einstellen, das die anderen Tests keinen Sinn machen. Probiert es mal selber:
Ergebnis:
hmac kann man eigentlich ganz vergessen. Der ist so langsam das es keinen Sinn macht, diesen mit zu testen. Ansonsten dauert es ewig oder man muß die loop Anzahl so niedrig einstellen, das die anderen Tests keinen Sinn machen. Probiert es mal selber:
Code: Alles auswählen
import timeit, os, string
loop = 500000
TEST_STRING = string.ascii_letters + string.digits
tests = (
("hash('%s')" % TEST_STRING, ""),
("md5.new('%s').hexdigest()" % TEST_STRING, "import md5"),
("sha.new('%s').hexdigest()" % TEST_STRING, "import sha"),
#~ ("hmac.new('%s').hexdigest()" % TEST_STRING, "import hmac"),
)
for no, test in enumerate(tests):
print "%s - %s" % (no+1, test[0])
test = timeit.Timer(test[0], test[1])
print "%.2f" % test.timeit(number=loop)
print
Die Python hash() Funktion ist also ungeschlagen. Leider dürften damit aber recht schnell Kollisionen auftreten ;(1 - hash('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789')
Test: 0.09
2 - md5.new('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789').hexdigest()
Test: 0.83
3 - sha.new('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789').hexdigest()
Test: 0.99