Curiosidad sobre __hash__()
Jesus Cea
jcea en jcea.es
Lun Feb 9 20:57:00 CET 2009
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Francesc Alted wrote:
> Ya veo. Sin embargo, no entiendo porqué se dice que dividiendo por 8 la
> distribución de hashes es más homegénea (dividir por una constante no
> veo que afecte a la distribución de una función).
El tema es que si __hash__() es la dirección de memoria, ésta estará
alineada, normalmente en múltiplo de 4 u 8 bytes. Es decir, los 2 o 3
bits de menor peso serán siempre cero. No nos ayudan nada a mejorar la
aleatoriedad del hash. Diviendo por 8 tiramos esos bits y hacemos sitio
para otros.
> O sea, que de manera consistente, la hash sin dividir parece que saca
> más rendimiento (un 15%) que la dividida por 8. No sé, lo mismo el
> rendimiento depende de la plataforma (o no he hecho bien los cálculos).
Hombre, es que dividir por 8 en tu código también consume recursos. En
tu caso hay ocho millones de divisiones "extras".
Estamos hablando de hacer esto en C, no en Python. No consume recursos y
la dispersión de bits de "__hash__()" es mejor.
- --
Jesus Cea Avion _/_/ _/_/_/ _/_/_/
jcea en jcea.es - http://www.jcea.es/ _/_/ _/_/ _/_/ _/_/ _/_/
jabber / xmpp:jcea en jabber.org _/_/ _/_/ _/_/_/_/_/
. _/_/ _/_/ _/_/ _/_/ _/_/
"Things are not so easy" _/_/ _/_/ _/_/ _/_/ _/_/ _/_/
"My name is Dump, Core Dump" _/_/_/ _/_/_/ _/_/ _/_/
"El amor es poner tu felicidad en la felicidad de otro" - Leibniz
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.8 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iQCVAwUBSZCKU5lgi5GaxT1NAQL1jwP/dXqcwDtce+IuHaV9XF8IJ3/ILLL6Tsdb
wt4Qbx4VsJcAEICHaAqi/0+GtGKLr4SKT3JscdhonOiin+322aobvL01fAWkt8/B
qzIJty7bEl18Kxc6HcFayaxon1MB3ipcMLXdUybHbiK303f80BTuvA13bsYBQibF
yMHgmxbI378=
=qTNW
-----END PGP SIGNATURE-----
------------ próxima parte ------------
_______________________________________________
Lista de correo Python-es
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes
Más información sobre la lista de distribución Python-es