[c#] .NET HashTable Vs Dictionary - هل يمكن أن يكون القاموس أسرع؟



3 Answers

أعتقد أنه لا يعني أي شيء لك الآن. ولكن فقط كمرجع للأشخاص الذين يتوقفون

اختبار الأداء - SortedList مقابل SortedDictionary مقابل قاموس مقابل Hashtable

Question

أحاول معرفة متى ولماذا لاستخدام قاموس أو HashTable. لقد قمت ببعض البحث هنا ووجدت أشخاصًا يتحدثون عن المزايا العامة في القاموس التي أتفق معها تمامًا ، والتي تقود ميزة الملاكمة وفقدان الصندوق من أجل تحقيق مكاسب طفيفة في الأداء.

ولكني قرأت أيضًا أن القاموس لن يقوم دائمًا بإرجاع الكائنات بالترتيب الذي تم إدراجه فيه ، الشيء الذي يتم فرزه. حيث سيكون بمثابة HashTable. كما أفهمها هذا يؤدي إلى HashTable يجري بشكل أسرع في بعض الحالات.

سؤالي هو حقا ، ما قد تكون تلك الحالات؟ هل أنا مخطئ في افتراضاتي أعلاه؟ ما هي المواقف التي قد تستخدمها لاختيار واحدة فوق الأخرى (نعم ، آخرها غامض بعض الشيء).




كلاهما بالفعل نفس الفئة (يمكنك النظر في التفكيك). تم إنشاء HashTable أولاً قبل .Net كان الأدوية البديلة. القاموس ، ومع ذلك هو فئة عامة ويعطيك فوائد الطباعة قوية. لن أستخدم HashTable أبدًا نظرًا لأن القاموس لن يكلفك شيئًا لاستخدامه.




إذا كنت تهتم بالقراءة التي ستقوم دائمًا بإرجاع الكائنات بالترتيب الذي تم إدراجه في قاموس ، فقد يكون لديك نظرة على ذلك

OrderedDictionary - يمكن الوصول إلى القيم عبر فهرس صحيح (حسب ترتيب العناصر التي تمت إضافتها) SortedDictionary - يتم فرز العناصر تلقائيًا




الاختلافات بين Hashtable والقاموس

قاموس:

  • إرجاع القاموس خطأ إذا حاولنا العثور على مفتاح غير موجود.
  • قاموس أسرع من Hashtable لأنه لا يوجد الملاكمة و unboxing.
  • القاموس هو نوع عام مما يعني أنه يمكننا استخدامه مع أي نوع بيانات.

جدول هاش:

  • إرجاع Hashtable Null إذا حاولنا العثور على مفتاح غير موجود.
  • أبطأ Hashtable من القاموس لأنه يتطلب الملاكمة و unboxing.
  • Hashtable ليس نوعًا عامًا ،



Related