No puedo usar boost: hash porque tengo que seguir con C y no puedo usar C++.¿Una función hash mínima para C?
Pero, necesito para discutir un número grande (10K a 100K) de cadenas de tokens (5 a 40 bytes de longitud) para que la búsqueda dentro de esos son más rápidos.
MD5, SHA1 o cualquier función hash larga parece demasiado pesada para una tarea sencilla, no estoy haciendo la criptografía. Además, está el costo de almacenamiento y computación.
Por lo tanto mi pregunta
Cuál podría ser el algoritmo de control más simple que asegure la prevención de colisiones en la mayoría de casos prácticos.
¿Cuántos bits a utilizar para el valor hash? Estoy desarrollando sistemas de 32 bits. ¿El algoritmo hash en Perl/Python usa hashes de 32 bits también? ¿O tengo que saltar a 64?
cuanto a la aplicación de las tablas hash en lenguajes de script comunes: ¿El cheque de implementación para las colisiones o puedo evitar que una parte del todo?
La siguiente página tiene varias implementaciones de funciones hash propósito general implementados en C (y muchos otros idiomas): http://partow.net/ programming/hashfunctions/index.html –
¿Ha considerado usar GLib? https://developer.gnome.org/glib/2.46/glib-Hash-Tables.html –