8Fermer10
ThibautLe 10/10/2007 à 12:59
C'est peut-être l'une des raisons de la lenteur de TIGCC smile Enfin bon, sur PC ça a peu d'importance.


J'ai trouvé ça sur wikipedia :
unsigned int hach_string(const char *str) 
{
        unsigned int hash = 5381; // DJB Hash
        const char *s;
        for (s = str; *s; s++) {
                hash = ((hash << 5) + hash) + tolower(*s);
        }
        return (hash & 0x7FFFFFFF)%HACH_TABLE_MAX;
}
Ils disent qu'elle donne une répartition des valeurs de hachage remarquablement homogène. En plus, elle me semble assez rapide (à condition que tolower(x) soit un simple accès à une table précalculée) smile



En fait, il faudrait pouvoir comparer les efficacités de tous ces algos (pour la vitesse on devine à peu près ce que ça donne à vue d'oeil). Je vais construire un petit code qui parse un gros fichier texte, puis hache les mots avec les différentes méthodes, et enfin calcule l'écart type des fréquences d'apparition de chaque valeur de hachage possible.

C'est bien l'écart type qui donnera une idée de l'homogénéité de chaque table ?