精品日产一卡2卡三卡4卡在线_久久永久免费人妻精品_欧美日韩精品久久久免费观看_一女4P三黑人免费视频

當前位置: 網站首頁  >> 知識庫  >> Android  >> 查看詳情

Android高效代碼注意什么

發(fā)布時間:2019-04-10 11:46:37  瀏覽次數:3905 
Android高效代碼注意什么?

 1, Avoid Creating Objects 

能不使用包裝類就不使用包裝類。

盡量使用 StringBuffer 來處理字符串

盡量使用一維數組代替多維數組

2, Use Native Methods

盡量使用系統(tǒng)提供的接口方法,因為系統(tǒng)提供的接口方法使用 C 編寫的,比自己用 Java 編寫的效率高

3, Prefer Virtual Over Interface

多使用接口的具體實現類。

<1>,Map myMap1 = new HashMap();

<2>,HashMap myMap2 = new HashMap();

兩者比較結果:第一種是一向大家比較推崇的,因為他對以后的維護成本低,但是接口方法的調用比實現類方法的調用更耗時。

4,   Prefer Static Over Virtual

多使用靜態(tài)的方法和屬性

5,   Avoid Internal Getters/Setters

避免使用 C++ 或 C 形式的 (i=this.getCounter()) 這樣子的代碼

6, Cache Field Lookups

訪問對象的屬性比訪問本地變量花費時間多。

   Accessing object fields is much slower than accessing local variables.

  Instead of writing:

for (int i = 0; i < this.mCount; i++)

      dumpItem(this.mItems[i]);

You should write:

      int count = this.mCount;

      Item[] items = this.mItems;

     for (int i = 0; i < count; i++)

      dumpItems(items[i]);

7,Declare Constants Final

聲明一些 final 類型的常量

static int intVal = 42;

static String strVal = "Hello, world!";

可以寫成如下:

static final int intVal = 42;                                                                                           

static final String strVal = "Hello, world!";

 

8,Use Enhanced For Loop Syntax With Caution

謹慎使用增強的 for 循環(huán),因為它創(chuàng)建多余臨時變量。

public class Foo {

    int mSplat;

    static Foo mArray[] = new Foo[27];

 

    public static void zero() {

        int sum = 0;

        for (int i = 0; i < mArray.length; i++) {

            sum += mArray[i].mSplat;

        }

    }

 

    public static void one() {

        int sum = 0;

        Foo[] localArray = mArray;

        int len = localArray.length;

 

        for (int i = 0; i < len; i++) {

            sum += localArray[i].mSplat;

        }

    }

 

    public static void two() {

        int sum = 0;

        for (Foo a: mArray) {

            sum += a.mSplat;

        }

    }

}


zero() 返回兩次靜態(tài)字段、每次循環(huán)的時候都要請求數組的長度

one() 將所有的屬性存放到本地,避免查找。

two() 使用 jdk1.5 以上版本的增強 for 循環(huán),這是有編譯器拷貝數組的引用和長度到本地這在主循環(huán)體會產生額外的本地裝載和存儲,這跟 one() 相比,比其運行時間長一小點,同時也比 one() 多 4byte 的存儲空間 u

To summarize all that a bit more clearly: enhanced for loop syntax performs well with arrays, but be cautious when using it with Iterable objects since there is additional object creation.

 

9,Avoid Enums

避免使用枚舉。

10,Use Package Scope with Inner Classes

建議使用內部類

public class Foo {

    private int mValue;

 

    public void run() {

        Inner in = new Inner();

        mValue = 27;

        in.stuff();

    }

 

    private void doStuff(int value) {

        System.out.println("Value is " + value);

    }

 

    private class Inner {

        void stuff() {

            Foo.this.doStuff(Foo.this.mValue);

        }

    }

}

11,               Avoid Float

盡量避免使用 float 類型

12,               Some Sample Performance Numbers

一些常用操作的占用時間相對比較:

操作                                                                    時間

Add a local variable                                                       1

Add a member variable                                                           4

Call String.length()                                                                     5

Call empty static native method                                            5

Call empty static method                                                        12

Call empty virtual method                                                      12.5

Call empty interface method                                                 15

Call Iterator:next() on a HashMap                                      165

Call put() on a HashMap                                                           600

Inflate 1 View from XML                                                                   22,000

Inflate 1 LinearLayout containing 1 TextView                   25,000

Inflate 1 LinearLayout containing 6 View objects            100,000

Inflate 1 LinearLayout containing 6 TextView objects     135,000

Launch an empty activity                                                        3,000,000

 這些時間相對值,值得我們好好的權衡哦,很有幫助。
聯系我們
在線咨詢 QQ客服 0731-88362910
地址:湖南省長沙市雷鋒大道1389號
如有問題,可在線提交表單