Quel est le meilleur 32bit fonction de hachage pour de courtes chaînes de caractères (noms de balise)?

Quel est le meilleur 32bit fonction de hachage pour relativement courtes chaînes?

Les chaînes de caractères sont des noms de balises qui consistent en anglais des lettres, des chiffres, des espaces et des caractères supplémentaires (#, $, ., ...). Par exemple: Unit testing, C# 2.0.

Je suis à la recherche pour le "meilleur", comme dans "minime collisions', la performance n'est pas important pour mes objectifs.

  • possible en double stackoverflow.com/questions/251346/...
  • Pas complètement, parce que ma question est plus précise en termes de hachage de taille et ignore les performances. Aussi, je ne suis pas à la recherche d'une fonction de hachage, je suis à la recherche d'un bon choix -- je sais qu'il y a CRC32 et FNV32, mais ce qui est le mieux pour mon nom de domaine?
  • Est votre liste de balises fixes à un ensemble de chaînes ou elle va se développer de manière dynamique au fil du temps?
  • Les balises sont ajoutés par des gens donc je ne peux pas prévoir (mais il y a de la longueur et de la limite de caractères).
  • Quelles sont les limites?
  • Longueur Max: 20, jeu de caractères actuel: [A-Za-z\d\.#$@\-\ ] (ce qui peut augmenter légèrement si je constate que certains symbole fort utile, je l'ai raté).
  • La page suivante a plusieurs implémentations de l'objectif général des fonctions de hachage qui sont efficaces et d'exposition minimale des collisions: partow.net/programming/hashfunctions/index.html