سؤال

وإذا كان لدي مجموعة رئيسية من 1000، ما هو حجم مناسب لبلدي الجدول تجزئة، وكيف يكون ذلك العزم؟

هل كانت مفيدة؟

المحلول

وهذا يعتمد على عامل الحمولة (و"في المئة كاملة" نقطة حيث الجدول سيزيد حجمها وإعادة توزيع عناصره). إذا كنت تعرف لديك بالضبط 1000، وهذا العدد سوف تتغير أبدا، يمكنك فقط تعيين عامل الحمولة إلى 1.0 و الحجم الأولي إلى 1000 لتحقيق أقصى قدر من الكفاءة. إذا لم تكن متأكدا من حجم بالضبط، هل يمكن أن يترك عامل الحمولة في الافتراضية من 0.75 وتعيين حجم الأولي إلى 1334 (حجم المتوقع / LF) ل <م> حقا الأداء الجيد، وبتكلفة من ذاكرة إضافية.

ويمكنك استخدام منشئ التالية لتعيين عامل الحمولة:

Hashtable(int initialCapacity, float loadFactor) 

نصائح أخرى

وتحتاج لعامل في وظيفة التجزئة كذلك.

واحد بحكم التجربة تشير جعل حجم الجدول حوالي ضعف، حتى لا يكون هناك مجال للتوسع، ونأمل أن يحافظ على عدد التصادمات الصغيرة.

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

ما هو نوع من الأمور التي تجزئة؟ مزيد من التفاصيل أن يولد المشورة أفضل.

وهناك بعض من مناقشة هذه العوامل في وثائق <وأ href = "http://java.sun.com/j2se/1.5.0/docs/api/java/util/Hashtable.html" يختلط = "نوفولو noreferrer "> Hashtable

وتركها تنمو. مع هذا الحجم، والتعامل التلقائي على ما يرام. عدا ذلك، 2 × حجم + 1 هو صيغة بسيطة. الأعداد الأولية هي أيضا نوع من جيدة، ولكن بمجرد أن مجموعة البيانات الخاصة بك تصل إلى حجم معين، وتنفيذ التجزئة قد تقرر إعادة صياغة وتنمو الجدول.

ومفاتيح لديك تدفع فعالية وتكون متميزة نأمل بما فيه الكفاية.

وخلاصة القول: اسأل سؤال حجم عندما يكون لديك مشاكل مثل حجم أو بطء الأداء، بخلاف ذلك: لا تقلق

ومرتين أمر جيد.

وليس لديك مجموعة مفاتيح كبيرة. لا تهتم حول مناقشات صعبة حول تنفيذ جدول هاش الخاص بك، والذهاب لعام 2000.

وأود أن أكرر ما https://stackoverflow.com/users/33229/wwwflickrcomphotosrene-germany ذكر أعلاه. 1000 لا يبدو مثل تجزئة كبيرة جدا بالنسبة لي. لقد تم استخدام الكثير من hashtables عن هذا الحجم في جافا دون أن يرى الكثير في الطريق من مشاكل الأداء. وأنا نادرا ما تلكأ مع حجم أو عامل الحمولة.

إذا كنت قد تشغيل ملفات التعريف على التعليمات البرمجية وقرر أن جدول هاش هي مشكلتك، ثم بكل الوسائل تبدأ التغيير والتبديل. خلاف ذلك، وأود أن لا تفترض أنك قد حصلت على المشكلة حتى كنت على يقين.

وبعد كل شيء، في معظم رمز، والمشكلة ليست الأداء حيث كنت أعتقد أنه هو. أحاول أن لا نتوقع.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top