Combien de seaux de hachage

Si je remarque que d'une table de hachage (ou de toute autre structure de données construite sur une table de hachage) est à remplir, à quel moment devriez-vous construire une nouvelle table avec plus de seaux. Et étant donné n les éléments de la table jusqu'à présent, comment pouvez-vous savoir comment beaucoup de compartiments à utiliser dans la nouvelle?

Donc, disons que j'ai 100 seaux. Dois-je réorganiser quand il y a 50 éléments-t-il? 500? 5000? Ou dois-je regarder pour la plupart-baquet et la clé sur qui? Puis, quand j'ai frappé à ce point, quelle taille dois-je faire de cette nouvelle table de hachage?

À ce propos, si vous savez à l'avance à peu près combien d'éléments vont dans, il est un moyen de calculer le nombre de seaux d'eau pour obtenir une bonne performance moyenne?

Je sais que la vraie réponse dépend de beaucoup d'autres considérations comme quelle est l'importance de vitesse par rapport à la taille dans un exemple spécifique, mais je suis à la recherche d'général guildlines.

Je sais aussi que je ne devrais pas être l'optimisation de ce genre de chose, à moins que les bonnes profilage a indiqué que c'est un goulot d'étranglement. Je suis juste à y penser un projet qui pourrait utiliser un grand nombre de tables de hachage et se demandait comment aborder cette.

OriginalL'auteur Matt | 2008-10-22