Curiosidad sobre __hash__()

Francesc Alted faltet en pytables.org
Jue Feb 5 08:29:11 CET 2009


A Thursday 05 February 2009, Chema Cortes escrigué:
> El Thursday 05 February 2009 01:10:01 Pepe Aracil escribió:
> > Creo que con un diccionario de 65536 entradas y un hash de 32 bits,
> > tengo 1/65536 posibilidades de tener una colisión.
> >
> > Son pocas posibilidades, pero yo no utilizaría un hash de 32 bits
> > para "cosas" críticas.
>
> No entiendo porqué ha de ser un problema. Los hashes se usan para
> ordenar los elementos con el fin de hacer búsquedas mucho más
> rápidas. (En realidad, determinan el orden de los items de un
> diccionario, por éso parece que estén desordenados). Que exista una
> "colisión" de dos índices en un diccionario sólo implica que se tarde
> un poco más en acceder al item solicitado;

Exacto.

> pero, aun con todo, puede 
> que sea menos tiempo que si se hubiera elegido longitudes mayores de
> hash.

Puede que tengas razón.  Supongo que la razón básica de elegir hashes de 
32-bit en plataformas de 32-bit es por temas de velocidad.  Igual que 
elegir una de 64-bit para plataformas de 64-bit: la aritmética de 
64-bit suele ser más rápida que la de 32-bit para estas últimas 
plataformas.

-- 
Francesc Alted
------------ 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