1. قم بإنشاء مثيل لفئة دون استخدام الكلمة الأساسية الجديدة
عند إنشاء مثيل لفئة باستخدام الكلمة الأساسية الجديدة، يتم استدعاء جميع المنشئين في سلسلة المنشئ تلقائيًا. ولكن إذا كان الكائن ينفذ واجهة قابلة للاستنساخ، فيمكننا استدعاء طريقة clone() الخاصة به. لا تستدعي طريقة clone () أي منشئي الفئة. إذا قمت بإنشاء كائن باستخدام نمط المصنع، فمن السهل جدًا استخدام طريقة clone() لإنشاء مثيل كائن جديد.
2. لا تقم بتهيئة المتغيرات بشكل متكرر
افتراضيًا، تقوم Java بتهيئة المتغيرات إلى قيم معينة عند استدعاء مُنشئ الفئة. يجب ملاحظة ذلك بشكل خاص عندما يتم اشتقاق فئة من فئة أخرى، لأنه عندما يتم إنشاء كائن باستخدام الكلمة الأساسية الجديدة، سيتم استدعاء جميع المُنشئين في سلسلة المُنشئ تلقائيًا.
3. استخدم الاستثناءات بحذر
الاستثناءات سيئة للأداء. يؤدي طرح الاستثناء أولاً إلى إنشاء كائن جديد. يقوم منشئ الواجهة Throwable باستدعاء الطريقة الأصلية المسماة fillInStackTrace(). تقوم طريقة fillInStackTrace() بفحص المكدس وجمع معلومات تتبع المكالمات. عندما يتم طرح استثناء، يجب على JVM ضبط مكدس الاستدعاءات لأنه يتم إنشاء كائن جديد أثناء المعالجة. يجب استخدام الاستثناءات فقط لمعالجة الأخطاء ولا يجب استخدامها للتحكم في تدفق البرنامج.
انتبه إلى النقطتين التاليتين. (1) تجنب استخدام عبارات المحاولة/التقاط لمنطق التطبيق إذا كان من الممكن معالجتها باستخدام عبارات منطقية مثل if و while، فحاول عدم استخدام عبارات المحاولة/التقاط قدر الإمكان (2) إعادة استخدام الاستثناءات عندما تكون معالجة الاستثناءات ضرورية. ، أعد استخدام كائنات الاستثناء الموجودة قدر الإمكان. لأنه في معالجة الاستثناءات، يستهلك إنشاء كائن استثناء معظم الوقت.
4. الموضوع
يمكن للخيوط الاستفادة الكاملة من موارد النظام. بينما تنتظر المواضيع الأخرى قراءة وكتابة القرص الصلب أو الشبكة، يمكن للبرنامج الاستمرار في المعالجة والتشغيل. ومع ذلك، فإن الاستخدام غير السليم للخيوط سيؤثر أيضًا على أداء البرنامج. مثال: استخدم فئة Vector بشكل صحيح. يستخدم Vector بشكل أساسي لحفظ أنواع مختلفة من الكائنات (بما في ذلك الكائنات من نفس النوع والأنواع المختلفة). يوفر Vector وظائف حماية سلامة الخيط. على الرغم من مزامنة العديد من الطرق في فئة Vector. ولكن إذا تأكدت من أن تطبيقك أحادي الترابط، فإن مزامنة هذه الطرق غير ضرورية على الإطلاق. بالإضافة إلى ذلك، عند البحث عن كائنات مختلفة مخزنة في Vector، غالبًا ما يستغرق الأمر وقتًا طويلاً لمطابقة الأنواع. عندما تكون هذه الكائنات كلها من نفس النوع، تكون هذه التطابقات غير ضرورية على الإطلاق. لذلك، من الضروري تصميم فئة أو مجموعة ذات ترابط واحد تحفظ كائنات من نوع معين لتحل محل فئة Vector.
فيما يتعلق بعمليات الترابط، يرجى ملاحظة ما يلي: (1) منع المزامنة المفرطة إذا كان البرنامج ذو ترابط واحد، فتأكد من عدم استخدام المزامنة. (2) مزامنة الأساليب بدلاً من مزامنة مقطع التعليمات البرمجية بأكمله، فإن مزامنة الطريقة لها أداء أفضل من مزامنة مقطع التعليمات البرمجية بالكامل.
5. حاول استخدام المتغيرات المحلية
يتم حفظ المعلمات التي تم تمريرها عند استدعاء الطريقة والمتغيرات المؤقتة التي تم إنشاؤها أثناء المكالمة في المكدس (المكدس)، وهو أسرع.
6. استخدم المتغيرات الثابتة قدر الإمكان
السماح لجميع المثيلات بمشاركة هذا المتغير.
7. حاول تحديد المعدل النهائي للفئة
لا يتم اشتقاق الفئات ذات المعدل النهائي. java.lang.String، تحديد Final لفئة String يمنع الأشخاص من تجاوز طريقة length(). بالإضافة إلى ذلك، إذا تم تعيين فصل دراسي على أنه نهائي، فستكون جميع أساليب الفصل نهائية. سوف يبحث مترجم Java عن فرص لتضمين جميع الطرق النهائية، والتي يمكن أن تحسن الأداء بمعدل 50٪.
8. إنشاء الكائن وتخصيص مساحة وحجم معقولين له
غالبًا ما يتم إنشاء عدد كبير من الكائنات (أو المثيلات) في برمجة JAVA. نظرًا لأن النظام لا يستغرق وقتًا لإنشاء الكائنات فحسب، بل قد يستغرق أيضًا وقتًا لتجميع البيانات المهملة ومعالجتها لاحقًا. لذلك، فإن إنشاء عدد كبير جدًا من الكائنات سيكون له تأثير كبير على أداء البرنامج، بالإضافة إلى ذلك، فإن العديد من الفئات في JAVA لها أحجام تخصيص المساحة الافتراضية الخاصة بها. بالنسبة لفئة StringBuffer، حجم المساحة المخصصة الافتراضي هو 16 حرفًا. إذا كان حجم مساحة StringBuffer المستخدمة في البرنامج ليس 16 حرفًا، فيجب إجراء التهيئة الصحيحة.
9. استخدم الإدخال/الإخراج غير المحظور
لا تدعم الإصدارات الأقل من JDK واجهة برمجة تطبيقات الإدخال/الإخراج غير المحظورة. لتجنب حظر الإدخال/الإخراج، تقوم بعض التطبيقات بإنشاء عدد كبير من مؤشرات الترابط (في الحالات الأفضل، يتم استخدام تجمع المخزن المؤقت). يمكن رؤية هذه التقنية في العديد من التطبيقات التي يجب أن تدعم تدفقات الإدخال/الإخراج المتزامنة، مثل خوادم الويب. قدم JDK 1.4 مكتبة إدخال/إخراج غير محظورة (java.nio).
هذه المقالة مأخوذة من مدونة CSDN، يرجى الإشارة إلى المصدر عند إعادة الطباعة: http://blog.csdn.net/Foxalien/archive/2009/12/18/5029659.aspx.