असल में यह हैश प्रदर्शन को अनुकूलित करने का दरवाजा है। हैश प्रदर्शन आपके द्वारा उपयोग किए जा रहे हैंशिंग डेटा पर और आपके द्वारा संभाले जा रहे डेटा पर भारी निर्भर करता है, इसलिए अंगूठे के नियम के साथ आने के लिए लगभग असंभव है। वैसे भी, कुछ कहा जा सकता है।
आप जानते हैं कि प्रत्येक डेटा संरचना अंतरिक्ष और समय दक्षता के बीच दी गई शेष राशि प्रदान करती है। हैश टेबल विशेष रूप से समय दक्षता के रूप में अच्छे होते हैं, जो एक आकर्षक स्थिर (0 (1)) समय की पहुंच प्रदान करते हैं।
यह तब तक सच रहता है जब तक टक्कर न हो। जब टक्कर होती है, तो पहुंच का समय टक्कर मूल्य से संबंधित बाल्टी के आकार के साथ रैखिक होता है। (अधिक जानकारी के लिए this पर एक नज़र डालें)। "धीमे" होने के अलावा, टक्कर, ज्यादातर एक्सेस टाइम गारंटी में व्यवधान है जो कि सबसे महत्वपूर्ण पहलू है जो अक्सर पहले स्थान पर हैश टेबल चुनने की ओर जाता है।
आदर्श रूप से, हैश टेबल "पूर्ण हैशिंग" के रूप में जाना जाता है (जो वास्तव में केवल तभी संभव है जब आप एल्गोरिदम को उस प्रकार के डेटा को ठीक-ठीक कर सकते हैं जिसे आप संभालेंगे), लेकिन यह इतना आसान नहीं है सामान्य मामले में प्राप्त करें (यह वास्तव में एक उदारता है)। वैसे भी, यह तथ्य की बात है कि बड़ी हैश सारणी (एक अच्छी हैशिंग एल्गोरिदम के साथ) टकराव की आवृत्ति को कम कर सकती है, और इस प्रकार स्मृति की कीमत पर प्रदर्शन में सुधार कर सकती है। छोटे हैश टेबल अधिक टकराव देखेंगे (इसलिए कम प्रदर्शन और कम गुणवत्ता वाली पहुंच समय गारंटी होगी) लेकिन कम स्मृति पर कब्जा करें।
तो, यदि आप अपना प्रोग्राम प्रोफाइल करते हैं और देखते हैं कि हैश टेबल एक्सेस एक बाधा है (किसी भी कारण से) तो आपके पास हैश स्पेस (यदि आपको देने की स्मृति है) के लिए अधिक मेमोरी आरक्षित करके इसे हल करने का मौका है।
किसी भी मामले में, मैं इस मान को यादृच्छिक रूप से नहीं बढ़ाऊंगा, लेकिन पूरी तरह से प्रोफाइलिंग के बाद ही, क्योंकि यह भी सच है कि एल्गोरिदम perl उपयोग (AFAIK) में संकलित किया गया है और इसका भी हैश प्रदर्शन पर एक बड़ा प्रभाव पड़ता है (दूसरे शब्दों में, यदि आप हैश स्पेस को बड़ा करते हैं तो भी आपको कई टकराव हो सकते हैं)।
प्रदर्शन से संबंधित चीजों के साथ सामान्य रूप से, यह उपयोगी हो सकता है या नहीं, यह आपके ठोस मामले पर निर्भर करता है।