Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android開發代碼的效率問題

Android開發代碼的效率問題

編輯:關於Android編程

實際上,不僅僅是android手機開發,所有的軟件開發都要注意代碼效率的問題!一般來說,實現相同的功能盡量較少地使用內存,最少的指令是一個優秀開發者需要時刻注意的!這裡從兩點來討論這個問題:

(一)數據類型選擇

首先來討論基本數據類型的選擇。對於一個32位的ARM,我們來看看兩個16位的數相加的匯編代碼:

000016d0

16d0: e0810000 add r0, r1, r0

16d4: e6bf0070 sxth r0,r0

16d8: e12fff1e bx 1r

可以看出16位的數據相加需要三條指令。下面我們來看看兩個double的數據想加的匯編指令:

00001728

1728: ec410b16 vmov d6, r0, r1

172c: ec432b17 vmov d7,r2,r3

1730: ee366b07 faddd d6, d6,d7

1734: ec510b16 vmov r0, r1, d6

1738: e12fff1e bx 1r

可以得出結論,實際上,不同數據類型的使用其效率時完全不一樣!

實際上,貿然說使用較小的數據類型效率高是不准確的!對於32的處理器,其32數據類型的效率時最高的!不過總的來說,在數據類型選擇上遵循兩個原則:

(1)盡量選擇數據類型小的

(2)盡量選擇相同類型的數據類型來操作:算數/比較等。也就是盡量防止不必要的強制轉換。

一般來說,16位的數據排序的效率要遠遠快於32位64位。

(二) 緩存

然後我們要說一下緩存。客觀的來講:指令越多,操作的數據量越大其效率就越低!為此,處理器有自己的辦法,那就是合理的使用緩存!現在處理器緩存技術已經很普遍,通常也有多級緩存!緩存的特點:效率高!成本高!所以一般情況下緩存不可能無限制的使用!緩存的目的就是保證處理器的效率,把常用的數據/指令或者他認為將要用到的數據和指令保存下來以此來滿足處理器用的時候能改快速找到!

所以,為保證效率,我們需要最大限度的讓處理器能在緩存中找到他需要的數據和指令。一般情況下,那些常常被使用到的就容易在緩存中存在,或者相鄰的相同的數據類型,必然數組等,都有可能被提前讀到緩存中以便處理器能改快速找到!所以,一般情況下順序訪問數組中的數據比隨機訪問數據效率高!

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved