Performance Tips نصائح الاداء
نغطي هنا بعض التحسينات التي يمكن ان تؤدي الى تحسن اداء التطبيق بشكل عام ولكن من غير المحتمل ان تودي هذه تغييرات كبيرة , يجب اختيار الخوارزميات وهياكل البيانات الصحيحة ولها الاولوية دائما .
هناك نوعين من القواعد الاساسية لكتابة كود فعال :
لضمان اداء التطبيق بشكل جيد عبر مجموعة من الاجهزة تأكد من ان الشفرة فعالة علي جميع المستويات وقم بتحسين الاداء بشكل فعال
هناك نوعين من القواعد الاساسية لكتابة كود فعال :
- لا تقم بعمل لا تحتاج الى القيام به
- لا تقم بتخصيص الذاكرة اذا كنت تستطيع تجنب ذلك
لضمان اداء التطبيق بشكل جيد عبر مجموعة من الاجهزة تأكد من ان الشفرة فعالة علي جميع المستويات وقم بتحسين الاداء بشكل فعال
1. تجنب انشاء كائنات غير ضرورية
انشاء الكائن غير مجاني لان تخصيص الذاكرة يكون اكثر تكلفة من عدم تخصيص الذاكرة
ولذلك تجنب انشاء كائنات لا تحتاج اليها وهذه بعض الامثلة :
- اذا كانت هناك fun تعيد string و يضاف الي StringBuffer دائما وانت متاكد من ذلك غير الدالة والحق string مباشرتا الى StringBuffer بدلا من انشاء كائن موقت يرجع القيمه من الدالة
- اذا كان هناك بيانات مدخلة وتريد التعامل معها احتفظ بالجزء الذي تريدة بدلا من انشاء نسخة كاملة عنها
- في الحقيقة انشاء 2 من المصفوفات من int اكشر كفاءة من انشاء مصفوفة من الكائنات (int,int)
- تجنب انشاء كائنات مؤقتة يقلل من القمامة داخل التطبيق ويحسن من تجربة المستخدم
2. استخدام static
اذا لا تجتاج الوصول الى الكائن يمكن ان تعرفة على انه static وهذا يزيد من السرعه 20% تقريبا
static final int x = 10
3. استخدام محسن لجمل loop
مثال :
static class Foo { int mSplat; } Foo[] mArray = ... public void zero() { int sum = 0; for (int i = 0; i < mArray.length; ++i) { sum += mArray[i].mSplat; } } public void one() { int sum = 0; Foo[] localArray = mArray; int len = localArray.length; for (int i = 0; i < len; ++i) { sum += localArray[i].mSplat; } } public void two() { int sum = 0; for (Foo a : mArray) { sum += a.mSplat; } }
zero : ابطأ لان حصول على طول مره كل دورة
one : اسرع من الاول لان الحساب يكون في متغيرات محلية
two : اسرع للاجهزه بدون jit ولا يمكن تمييزه عن one للاجهزه التي تحتوي jit
كقاعدة عامة هي ابطىء 2* من الاعداد الصحيحه int في نظام اندرويد
قد تكون المكتبات اسرع بكثير من الكود الخاص بنا
one : اسرع من الاول لان الحساب يكون في متغيرات محلية
two : اسرع للاجهزه بدون jit ولا يمكن تمييزه عن one للاجهزه التي تحتوي jit
4. تجنب استخدام floating-point
كقاعدة عامة هي ابطىء 2* من الاعداد الصحيحه int في نظام اندرويد
5. معرفه واستخدام المكاتب
قد تكون المكتبات اسرع بكثير من الكود الخاص بنا
تعليقات
إرسال تعليق