基本的にハッシュパフォーマンスを最適化するための扉です。ハッシュのパフォーマンスは、使用されているハッシュアルゴリズムと処理しているデータの両方に大きく依存するため、経験則を思いつくことはほとんど不可能です。とにかく、何かが言える。
各データ構造では、効率と時間の間に一定のバランスがあることがわかります。ハッシュテーブルは時間効率に関して特に優れており、魅力的な定数(0(1))時間アクセスを提供します。
これは、衝突がない限り、成立します。衝突が発生した場合、アクセス時間は、衝突値に対応するバケットのサイズと線形である。 (詳細はthisをご覧ください)。衝突は「遅い」とは別に、ほとんどの場合、最初にハッシュテーブルを選択する最も重要な側面の1つであるアクセス時間保証が中断されています。
理想的には、ハッシュテーブルは "完璧なハッシング"(実際には処理するデータの種類に合わせてアルゴリズムを微調整できる場合のみ可能です)を目標とすることができますが、これは簡単ではありません一般的な場合に達成する(これは実際には婉曲である)。とにかく、大きなハッシュテーブル(良いハッシュアルゴリズムと一緒に)が衝突の頻度を減らし、メモリを犠牲にしてパフォーマンスを向上させることは事実です。ハッシュテーブルが小さくなればなるほど多くの衝突が発生します(したがって、パフォーマンスが低下し、アクセス時間の保証が低下します)が、メモリの占有量は少なくなります。
したがって、プログラムをプロファイルして、ハッシュテーブルのアクセスがボトルネックになっている(何らかの理由で)場合は、ハッシュスペースのためにより多くのメモリを予約することで解決できます。
いずれにしても、この値をランダムに増やすことはありませんが、プロファイリングを徹底した後でなければなりません。アルゴリズムのperlの使用が(AFAIK)でコンパイルされ、言い換えれば、ハッシュスペースを大きくしても多くの衝突が発生する可能性があります)。
通常、パフォーマンス関連のものと同じように、それは役に立つかもしれないし、あなたの具体的なケースに依存するかもしれない。