سؤال

في لغات البرمجة المفسرة، مثل PHP وJavaScript، ما هي تداعيات اتباع النهج الموجه للكائنات على النهج الإجرائي؟

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

الحد الأدنى:ما مدى حجم الأداء (إن وجد) حقًا، عند استخدام OO مقابل OO.إجرائية في لغة مترجمة؟

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

المحلول

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

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

نصائح أخرى

لسوء الحظ، لقد أجريت اختباراتي أيضًا.لقد قمت باختبار السرعة، وهي نفس الشيء تقريبًا، ولكن عند اختبار استخدام الذاكرة للحصول على Memory_get_usage() في PHP، رأيت رقمًا أكبر بشكل كبير على جانب OOP.

116.576 بايت لـ OOP إلى 18.856 بايت للإجرائية.أعلم أن "الأجهزة رخيصة"، لكن هيا!زيادة بنسبة 1000% في الاستخدام؟آسف، هذا ليس الأمثل.ومع وصول عدد كبير جدًا من المستخدمين إلى موقع الويب الخاص بك في وقت واحد، فأنا متأكد من أن ذاكرة الوصول العشوائي (RAM) الخاصة بك سوف تحترق أو تنفد.هل انا مخطئ؟

الحد الأدنى:لا، لأن عبء التفسير يطغى على عبء إرسال الطريقة.

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

يتطلب OOP الكثير من عمليات تخصيص الذاكرة (MALLOC) والعديد من العمليات التي يتم تشغيلها في الذاكرة مقارنة بالكود الإجرائي.يتطلب الكثير من وقت وحدة المعالجة المركزية لأداء مهامه.إنها في الأساس عبارة عن "نفقات عامة"، ملفوفة حول التعليمات البرمجية الإجرائية، مما يزيد من عبء وحدة المعالجة المركزية لتنفيذها، خاصة عند إجراء عمليات قاعدة البيانات.

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

إذا كنت لا تتوقع أن يكون موقعك مشغولاً للغاية، فاستخدم OOP بكل الوسائل.إذا كنت تقوم ببناء نظام عالي الحركة، فستحتاج إلى تجريد كل دورة وحدة المعالجة المركزية من المعالجة وكل بايت من المخرجات قدر الإمكان.

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

سيتميز أدائك بالتنفيذ وليس باللغة.يمكنك استخدام أبطأ لغة ويمكن أن يصبح أكبر موقع في العالم طالما أنك صممته على نطاق واسع.

فقط تذكر القاعدة الأولى للتحسين.

لا.

:)

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

لذا حقًا، لا يهم (في تجربتي على أي حال).

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