وهو أسرع/أكثر كفاءة:القاموس<string,object> أو القاموس<enum,object>?
-
03-07-2019 - |
سؤال
هي التعداد أنواع أسرع/أكثر كفاءة من سلسلة أنواع عندما تستخدم القاموس المفاتيح ؟
IDictionary<string,object> or IDictionary<enum,object>
كما واقع الأمر ، وهو نوع البيانات هو الأكثر ملاءمة باعتباره مفتاح القاموس و لماذا ؟
النظر في ما يلي: ملاحظة:فقط 5 خصائص البساطة
struct MyKeys
{
public string Incomplete = "IN";
public string Submitted = "SU";
public string Processing="PR";
public string Completed = "CO";
public string Closed = "CL";
}
و
enum MyKeys
{
Incomplete,
Submitted,
Processing,
Completed,
Closed
}
مما سبق سوف تكون أفضل إذا ما استخدمت المفاتيح في القاموس!
المحلول
بالتأكيد enum
الإصدار هو أفضل (عندما يتم تطبيقها على معنى بالطبع).ليس فقط من أجل أداء (يمكن أن يكون أفضل أو أسوأ من ذلك ، انظر Rashack جيد جدا التعليق) كما تم تجميع الوقت والنتائج في نظافة رمز.
يمكنك التحايل على comparer المشكلة باستخدام Dictionary<int, object>
و الصب enum
مفاتيح int
s أو تحديد مخصص comparer.
نصائح أخرى
أعتقد أن عليك أن تبدأ من خلال التركيز على صحتها.هذا أهم بكثير من الحد الأدنى الفرق بين الأداء طفيفة الخلافات التي قد تحدث داخل البرنامج الخاص بك.في هذه الحالة أود أن أركز على التمثيل السليم من أنواع (enum يبدو أن يكون أفضل).ثم في وقت لاحق على ملف التطبيق الخاص بك إذا كان هناك مسألة, ثم وبعد ذلك فقط يجب عليك إصلاحه.
مما يجعل رمز أسرع وقت لاحق في هذه العملية هو عادة عملية مباشرة إلى الأمام.خذ الرابط هذا skolima المقدمة.إذا كنت قد اخترت التعداد ، كان حوالي 10 دقائق سيرا على إصلاح لإزالة المحتملة مشكلة الأداء في التطبيق الخاص بك.أريد أن أشدد على كلمة المحتملة هنا.كان هذا بالتأكيد مشكلة NHibernate ولكن ما إذا كان أو لا سيكون مشكلة البرنامج سيكون تتحدد الاستخدامات.
من ناحية أخرى ، مما يجعل رمز الأصح في وقت لاحق في عملية يميل إلى أن يكون أكثر صعوبة.كبيرة بما يكفي مشكلة سوف تجد أن يبدأ الناس مع الاعتماد على الآثار الجانبية السابقة السلوك السيئ.هذا يمكن أن يجعل تصحيح التعليمات البرمجية دون كسر المكونات الأخرى صعبة.
استخدام التعداد للحصول على أنظف و أجمل مدونة, ولكن تذكر أن توفير مخصص comparer إذا كنت تشعر بالقلق مع الأداء: http://ayende.com/Blog/archive/2009/02/21/dictionaryltenumtgt-puzzler.aspx .
وأود أن أعتقد أن التعداد الإصدار أسرع.تحت غطاء محرك السيارة القاموس المراجع كل شيء hashcode.تخميني هو أنه أبطأ لتوليد hashcode عن سلسلة.ولكن هذا هو على الارجح ماما أبطأ, و هو بالتأكيد أسرع من أي شيء مثل سلسلة مقارنة.وأنا أتفق مع ملصقات أخرى من قال أن التعداد هو الأنظف.