मैं एसएएस हैशटेबल में एक बाल्टी के निर्धारण पर थोड़ा सा स्पष्टीकरण देना चाहता हूं। सवाल वास्तव में हैशैक्स पैरामीटर के बारे में है।हैशक्स द्वारा निर्दिष्ट एसएएस हैशटेबल में टेबल आकार वास्तव में क्या है?
एसएएस डॉक्स में अनुसार, hashexp है:
हैश वस्तु के आंतरिक तालिका आकार, जहां हैश तालिका का आकार 2n है।
हैश तालिका का आकार बनाने के लिए HASHEXP का मान शक्ति के दो एक्सपोनेंट के रूप में उपयोग किया जाता है। उदाहरण के लिए, HASHEXP के लिए 4 के एक मूल्य 24 या 16 वर्ष की एक हैश तालिका आकार के बराबर HASHEXP के लिए अधिकतम मूल्य 20.
हैश तालिका आकार आइटम है कि हो सकता है की संख्या के बराबर नहीं है संग्रहीत। हैश टेबल की कल्पना 'बाल्टी' की सरणी के रूप में करें। 16 के हैश टेबल आकार में 16 'बाल्टी' होंगी। प्रत्येक बाल्टी में अनंत वस्तुओं की संख्या हो सकती है। हैश तालिका की दक्षता बाल्टी से वस्तुओं को पुनर्प्राप्त करने और पुनर्प्राप्त करने के लिए हैशिंग फ़ंक्शन की क्षमता में निहित है।
हैश ऑब्जेक्ट लुकअप दिनचर्या की दक्षता को अधिकतम करने के लिए आपको हैश ऑब्जेक्ट में डेटा की मात्रा के सापेक्ष हैश तालिका आकार सेट करना चाहिए। जब तक आपको सर्वश्रेष्ठ नतीजा न मिल जाए तब तक विभिन्न HASHEXP मानों को आजमाएं। उदाहरण के लिए, यदि हैश ऑब्जेक्ट में एक मिलियन आइटम हैं, तो हैश तालिका का आकार 16 (HASHEXP = 4) काम करेगा, लेकिन बहुत कुशलता से नहीं। 512 या 1024 (हैशएक्सपी = 9 या 10) का हैश टेबल आकार का परिणाम सर्वश्रेष्ठ प्रदर्शन होगा।
सवाल है वास्तव में, एक हैश तालिका आकार है क्या, जबकि यह हैश वस्तु में डेटा का एक राशि नहीं है?
क्या यह समझा जाना चाहिए कि हम उतनी मेमोरी आवंटित करना चाहते थे क्योंकि यह निष्क्रिय हो सकता है लेकिन कम नहीं, और नहीं। चीजें तेजी से काम करने के लिए यह दो की शक्ति है। लेकिन यह संभवतः इस्तेमाल किए गए डेटा की मात्रा को सीमित नहीं करता है, यह केवल इंगित करता है कि कितना उपयोग किया जा रहा है, है ना?