54Fermer56
PolluxLe 11/10/2007 à 15:00
euh la façon dont tu utilises hach_wkp est loin d'être optimale, puisque tu calcules modulo une puissance de 2 ; le mieux serait soit de calculer modulo 257, soit si la qualité de hachage actuelle te suffit d'optimiser cette fonction en une fonction plus rapide qui renvoie le même résultat :
int hach_wkp(const char *str)
{
        unsigned int hash = 5381; // DJB Hash
        unsigned int hash5 = 0;
        const char *s;
        for (s = str; *s; s++) {
                hash5 += hash;
                hash += *s;
        }
        return (hash + hash5<<5) & 0xFF;
}

(tu peux même essayer avec d'autres valeurs que 5)