c# - .NET हैशटेबल बनाम शब्दकोश-क्या शब्दकोश तेज़ी से हो सकता है?




collections dictionary (6)

एमएसडीएन अनुच्छेद: " Dictionary<TKey, TValue> कक्षा में Dictionary<TKey, TValue> वर्ग के समान कार्यक्षमता है। एक Dictionary<TKey, TValue> किसी विशिष्ट प्रकार ( Object ) के मूल्य प्रकार के लिए Hashtable से बेहतर प्रदर्शन है क्योंकि तत्व Hashtable Object प्रकार के हैं और इसलिए, मुक्केबाजी और अनबॉक्सिंग आमतौर पर तब होती है जब मूल्य मान को संग्रहीत या पुनर्प्राप्त किया जा सके "।

लिंक: http://msdn.microsoft.com/en-us/library/4yh14awz(v=vs.90).aspx

मैं यह जानने का प्रयास कर रहा हूं कि कब और क्यों एक शब्दकोश या हैशटेबल का उपयोग करना है। मैंने यहां थोड़ी सी खोज की है और लोगों ने डिक्शनरी के सामान्य फायदों के बारे में बात की है जो मैं पूरी तरह से सहमत हूं, जो मामूली प्रदर्शन लाभ के लिए मुक्केबाजी और अनबॉक्सिंग लाभ की ओर जाता है।

लेकिन मैंने यह भी पढ़ा है कि शब्दकोश हमेशा ऑब्जेक्ट्स को क्रम में क्रम में वापस नहीं करेगा, जिस चीज को हल किया गया है। जहां हैशटेबल होगा। जैसा कि मैं समझता हूं यह कुछ स्थितियों के लिए हैशटेबल को बहुत तेजी से ले जाता है।

मेरा सवाल वास्तव में है, उन परिस्थितियों में क्या हो सकता है? क्या मैं उपरोक्त मेरी धारणाओं में गलत हूं? आप एक से ऊपर का चयन करने के लिए किस स्थितियों का उपयोग कर सकते हैं, (हाँ आखिरी वाला थोड़ा अस्पष्ट है)।


हैशटेबल और शब्दकोश के बीच मतभेद

शब्दकोश:

  • डिक्शनरी त्रुटि देता है अगर हम एक कुंजी खोजने की कोशिश करते हैं जो मौजूद नहीं है।
  • शब्दकोश हैशटेबल से तेज़ है क्योंकि कोई मुक्केबाजी और अनबॉक्सिंग नहीं है।
  • शब्दकोश एक सामान्य प्रकार है जिसका अर्थ है कि हम इसे किसी भी डेटा प्रकार के साथ उपयोग कर सकते हैं।

हैश टेबल:

  • हैशटेबल शून्य लौटाता है अगर हम ऐसी कुंजी ढूंढने का प्रयास करते हैं जो मौजूद नहीं है।
  • हैशटेबल शब्दकोश से धीमा है क्योंकि इसे मुक्केबाजी और अनबॉक्सिंग की आवश्यकता है।
  • हैशटेबल एक सामान्य प्रकार नहीं है,

एक और महत्वपूर्ण अंतर यह है कि हैशटेबल प्रकार लॉक-फ्री एकाधिक पाठकों और एक ही लेखक को एक ही समय में समर्थन करता है, जबकि शब्दकोश नहीं होता है।


दोनों प्रभावी ढंग से एक ही कक्षा में हैं (आप डिस्सेप्लर देख सकते हैं)। हैशटेबल को पहले जेनेटिक्स के पहले बनाया गया था। शब्दकोश, हालांकि एक सामान्य वर्ग है और आपको मजबूत टाइपिंग लाभ देता है। मैं कभी भी हैशटेबल का उपयोग नहीं करता क्योंकि शब्दकोश का उपयोग करने के लिए आपको कुछ भी नहीं लगता है।


यदि आप पढ़ने के बारे में परवाह करते हैं जो हमेशा ऑब्जेक्ट्स को एक शब्दकोश में डाले गए क्रम में वापस कर देगा, तो आप देख सकते हैं

OrderedDictionary - मूल्यों को एक पूर्णांक अनुक्रमणिका के माध्यम से एक्सेस किया जा सकता है (जिस क्रम में आइटम जोड़े गए थे) सॉर्टेड SortedDictionary - आइटम स्वचालित रूप से सॉर्ट किए जाते हैं


शब्दकोश हैशटेबल से तेज़ है क्योंकि शब्दकोश एक सामान्य मजबूत प्रकार है। हैशटेबल धीमा है क्योंकि यह डेटा प्रकार के रूप में ऑब्जेक्ट लेता है जो मुक्केबाजी और अनबॉक्सिंग की ओर जाता है।





hashtable