سؤال

ما هي تكلفة أداء برامجي إذا أضفت طرق تمديد لها؟
هل ستعمل أبطأ أو قد يكون تحميل أبطأ؟
شكرًا.

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

المحلول

ما هي تكلفة أداء برامجي إذا أضفت طرق تمديد لها؟ هل ستعمل أبطأ أو قد يكون تحميل أبطأ؟

لن يكون هناك نجاح في الأداء. طرق التمديد هي أساليب ثابتة حقًا.

نصائح أخرى

طريقة التمديد هي مجرد السكر النحوي المطبقة على طريقة ثابتة.

من الناحية النظرية ، فإن الطريقة الثابتة أسرع من طريقة مثيل غير قميص (لا حاجة للتحقق من NULL this) والتي بدورها أسرع من طريقة مثيل افتراضي (لا حاجة إلى البحث عن التنفيذ للاتصال).

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

في الممارسة العملية ، هناك احتمالات أن تكون طريقة التمديد سيكون لها الكثير من التأثير ، سواء كان ذلك امتدادًا أو مثيلًا.

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

لذلك ، في مجموعة جاهزة للإصدار ، لا عقوبة أداء.

من المؤكد أنه لن يتم تحميله أبطأ ، لأن تحميل البرنامج لا يعتمد على مسارات التنفيذ في البرنامج.

أما بالنسبة للركض ببطء أكثر؟ فقط قياس الوقت المستغرق لطريقة التمديد وطريقة عدم التمديد سوف تظهر بالتأكيد. أظن أن الفرق لن يكون كبيرًا حتى لو كان قابلاً للقياس بالفعل.

يجب أن يكون الاعتبار المهم دائمًا هو "هل طريقة التمديد تجعل الكود الخاص بي أكثر وضوحًا وأسهل في الفهم والحفاظ على".

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