編寫高效的Android代碼

來源:互聯網
上載者:User

標籤:android   class   c   java   int   get   

  為什麼在這就意味著沒有多少剩餘空間給你去浪費了,因此,在你寫Androi編寫Android程式時要時刻考慮執行的效率,這些系統不是想象中的那麼快,並且你還要考慮它電池的續航能力。寫程式的時候,要儘可能的使你的代碼最佳化而提高效率。  對於如何判斷一個系統的不合理,這裡有兩個基本的原則: 1、不要做不必要做的事情。 2、儘可能的節省記憶體的使用。 下面是常用的幾點最佳化建議: 1、儘可能避免建立對象(Object)  因為對象的建立並不是沒有代價的,如果你在一個使用者介面的迴圈中分配一個對象,你不得不強制的進行記憶體回收,那麼就會使使用者體驗出現稍微“打嗝”的現象。當從原始的輸入資料中提取字串時,試著從原始字串返回一個子字串,而不是建立一份拷貝。  2、使用自身方法(Use Native Methods)  當處理字串的時候,不要猶豫,儘可能多的使用諸如String.indexOf()、String.lastIndexOf()這樣對象自身帶有的方法。因為這些方法使用C/C++來實現的,要比在一個java迴圈中做同樣的事情快10-100倍。  3、緩衝屬性調用Cache Field Lookups  訪問對象屬性要比訪問本地變數慢得多。你不應該這樣寫你的代碼:for (int i = 0; i < this.mCount; i++)      dumpItem(this.mItems[i]);而是應該這樣寫:  int count = this.mCount;  Item[] items = this.mItems;   for (int i = 0; i < count; i++)      dumpItems(items[i]);(我們直接使用“this”表明這些是它的成員變數)  4、聲明Final常量  我們可以看看下面一個類頂部的聲明:static int intVal = 42;static String strVal = "Hello, world!";當一個類第一次使用時,編譯器會調用一個類初始化方法,這個方法將42存入變數intVal,並且為strVal在類檔案字串常量表中提取一個引用,當這些值在後面引用時,就會直接屬性調用。我們可以用關鍵字“final”來改進代碼:static final int intVal = 42;static final String strVal = "Hello, world!";這個類將不會調用類初始化方法,因為這些常量直接寫入了類檔案靜態屬性初始化中,這個初始化直接由虛擬機器來處理。代碼訪問intVal將會使用Integer類型的42,訪問strVal將使用相對節省的“字串常量”來替代一個屬性調用。將一個類或者方法聲明為“final”並不會帶來任何的執行上的好處,它能夠進行一定的最佳化處理。例如,如果編譯器知道一個Get方法不能被子類重載,那麼它就把該函數設定成Inline。  5、避免浮點類型的使用  嵌入式的處理器通常並不支援浮點數的處理,因此所有的“float”和“double”操作都是通過軟體進行的,一些基本的浮點數的操作就需要花費毫秒級的時間。同事,即使是整數,一些晶片也只有乘法而沒有除法。在這些情況下,整數的除法和模數操作都是通過軟體實現。  6、避免列舉類型Avoid Enums  列舉類型非常好用,當考慮到尺寸和速度的時候,就會顯得代價很高,例如:public class Foo {   public enum Shrubbery { GROUND, CRAWLING, HANGING }}這會轉變成為一個900位元組的class檔案(Foo$Shrubbery.class)。第一次使用時,類的初始化要在獨享上面調用方法去描述列舉的每一項,每一個對象都要有它自身的靜態空間,整個被儲存在一個數組裡面(一個叫做“$VALUE”的靜態數組)。那是一大堆的代碼和資料,僅僅是為了三個整數值。Shrubbery shrub = Shrubbery.GROUND;這會引起一個靜態屬性的調用,如果GROUND是一個靜態Final變數,編譯器會把它當做一個常數嵌套在代碼裡面。  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.