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)


donc autant pas se prendre la tête et prendre hash_toutcon si ton but est de l'utiliser sur ce genre de fichier-là ^^
) est censé être de 26.7/16 = 1.7, donc on ne peut absolument rien conclure ^^
(STM = StartTime en µSec, ETM = EndTime en µSec, EXT = Execution Time en S et HPS = Hash Par Seconde)