Pollux (./55) :Est-ce que je peux combiner tes deux propositions ? (algo optimisé en vitesse & modulo 257), ce qui nous donne ça :
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_pollux_257(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; } hash= hash + (hash5<<5); while (hash % 257 == 256) hash/= 257; return (hash % 257); }
?
(je pose la question car j'avoue que je n'ai pas compris ton optimisation, pour moi la raison qui fait que l'algo de départ et ta version optimisée sont équivalentes reste obscure)