سؤال

أنا أعمل على إنشاء إطار عمل DI خاص بي والذي ينشئ مصانع المندوبين كتمرين تعليمي.طريقتي في إنشاء المفوضين المكتوبين هي استخدام التعبيرات لإنشاء وظيفة تستدعي طريقة ثابتة بالإشارة إلى الحاوية الخاصة بي وأي معلمات مُنشئة.

أثار هذا سؤالًا مثيرًا للاهتمام فيما يتعلق بأنواع القيمة.ما هو الأكثر أداء:

أ) استخدام الانعكاس لتحديد طريقة عامة ثابتة مع العدد الصحيح من المعلمات ثم استخدم MakeGenericMethod لإزالة الأدوية العامة

ب) اذهب إلى Object[] الموضة القديمة وحقق النجاح في الملاكمة؟

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

المحلول

وIME، الساعة الملاكمة لا يعد شيئا بالمقارنة إلى التفكير.

نصائح أخرى

وكنت أعتقد أن هذا التفكير يكون هناك الكثير أبطأ، وربما من حيث الحجم للغاية.

وانها جميلة سهلة لمقاعد البدلاء على الرغم من إعطائها الذهاب ونشر النتائج الخاصة بك:)

في هذه الحالة، الملاكمة سيكون أوامر من حجم أسرع من التفكير.

وبطبيعة الحال، هل يمكن دائما تخزين نتائج التفكير.

على العموم, أود أن أقول إنه حتى لو كانت الملاكمة أبطأ (إلى حد غير ملحوظ)، فهي الطريقة الصحيحة التي يجب اتباعها.إن الانعكاس هو أداة لتسهيل نوع ما من البرمجة الوصفية - عندما يتعين عليك القيام ببعض الأعمال على الكود نفسه، وليس لتسهيل منطق أعمال التطبيقات الخاصة بك، وبالتالي لا يجب عليك استخدامه دون سبب وجيه.يجب على المبرمج أن يفكر من المجال المادي أولاً.ومع ذلك، في حالتك، ربما لا يهم ذلك لأنك تسير بالفعل في الطريق الوصفي أظن.استخدام object لا يزال يعطيك تجميع سلامة الوقت إلى حد ما و صيانة أفضل.

كما قال الآخرون، الانعكاس هو الأبطأ هنا (إلا إذا لم تقم بالتخزين المؤقت).الشيء الآخر الذي يأتي لصالح الملاكمة هو ذلك على الأرجح أنك ملاكم على أي حال عند التعامل مع التفكير.تتعامل واجهة برمجة تطبيقات الانعكاس دائمًا مع object, ، لذلك إذا كنت ستستعيد بعض قيمة المثيل، فيجب عليك فتح العلبة.بصورة مماثلة، الاتصال GetType في مثيل نوع القيمة، قم أولاً بوضعه في مربع object والذي قد تضطر إلى القيام به إذا لم يكن لديك وسيطة النوع، ولكن المثيل فقط.

لكن البديل الأفضل هو الاعتماد على الأدوية الجنيسة.بعض الأنماط الجميلة مفصلة هنا.

إذا المرء أن معالجة مليون قطعة، الملاكمة كل بند سيكون أقل كفاءة من معالجتها دون الملاكمة، ولكن سيكون أسرع بكثير من استخدام انعكاس لمعالجة نوع من كل بند.

من ناحية أخرى، في العديد من السيناريوهات سيكون من الممكن لمعالجة مليون قطعة من بعض عمومية نوع T باستخدام التفكير مرة واحدة، على نوع T، لبناء كائن التي يمكن معالجة شيء من نوع T دون الملاكمة، ومن ثم ذاكرة التخزين المؤقت نتيجة لذلك لعمر البرنامج. هذه هي الطريقة التي أحب الأشياء عمل الأشياء EqualityComparer<T>.Default. هذا النهج يمكن بسهولة أكثر من أمر من حجم أسرع من الملاكمة كل بند.

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