Android開發代碼的效率問題

來源:互聯網
上載者:User

標籤:android   緩衝   彙編   軟體開發   記憶體   

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

(一)資料類型選擇

       首先來討論基礎資料型別 (Elementary Data Type)的選擇。對於一個32位的ARM,我們來看看兩個16位的數相加的彙編代碼:

                                                                            000016d0 <add_16_16>

                                                                                     16d0: e0810000      add  r0, r1, r0

                                                                                     16d4: e6bf0070        sxth r0,r0

                                                                                      16d8: e12fff1e          bx 1r

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

                                                                             00001728 <add_double_double>

                                                                                         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位。

(二)   緩衝

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

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.