精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

如何編寫高效android代碼

移動開發 Android
基于Android相關設備作為嵌入式設備范疇,在書寫App應用的時候要格外關注效率,并且受電池電量的限制。這就導致嵌入式設備有諸多考慮、有限處理能力,因此就要求我們盡量去寫高效的代碼。本文討論了很多能讓開發者使他們的程序運行更有效的方法,遵照這些方法,你可以使你的程序發揮最大的效力。

基于Android相關設備作為嵌入式設備范疇,在書寫App應用的時候要格外關注效率,并且受電池電量的限制。這就導致嵌入式設備有諸多考慮、有限處理能力,因此就要求我們盡量去寫高效的代碼。本文討論了很多能讓開發者使他們的程序運行更有效的方法,遵照這些方法,你可以使你的程序發揮***的效力。

引言

對于占用資源的系統,有兩條基本原則:

不要做不必要的事

不要分配不必要的內存

所有下面的內容都遵照這兩個原則。

1、避免建立對象

世界上沒有免費的對象。雖然GC為每個線程都建立了臨時對象池,可以使創建對象的代價變得小一些,但是分配內存永遠都比不分配內存的代價大。

如果你在用戶界面循環中分配對象內存,就會引發周期性的垃圾回收,用戶就會覺得界面像打嗝一樣一頓一頓的。

所以,除非必要,應盡量避免盡力對象的實例。下面的例子將幫助你理解這條原則:

當你從用戶輸入的數據中截取一段字符串時,盡量使用substring函數取得原始數據的一個子串,而不是為子串另外建立一份拷貝。這樣你就有一個新的String對象,它與原始數據共享一個char數組。

如果你有一個函數返回一個String對象,而你確切的知道這個字符串會被附加到一個StringBuffer,那么,請改變這個函數的參數和實現方式,直接把結果附加到StringBuffer中,而不要再建立一個短命的臨時對象。

一個更極端的例子是,把多維數組分成多個一維數組:

int數組比Integer數組好,這也概括了一個基本事實,兩個平行的int數組比(int,int)對象數組性能要好很多。同理,這試用于所有基本類型的組合。

如果你想用一種容器存儲(Foo,Bar)元組,嘗試使用兩個單獨的Foo[]數組和Bar[]數組,一定比(Foo,Bar)數組效率更高。(也有例外的情況,就是當你建立一個API,讓別人調用它的時候。這時候你要注重對API借口的設計而犧牲一點兒速度。當然在API的內部,你仍要盡可能的提高代碼的效率)

總體來說,就是避免創建短命的臨時對象。減少對象的創建就能減少垃圾收集,進而減少對用戶體驗的影響。

2、使用本地方法

當你在處理字串的時候,不要吝惜使用String.indexOf(), String.lastIndexOf()等特殊實現的方法。這些方法都是使用C/C++實現的,比起Java循環快10到100倍。

但也并非要完全使用本地方法,調用本地方法的代價要高于調用解釋方法。所以如果可以避免,就不應使用本地方法去做一些并不復雜的運算。

3、選擇虛類而不是接口

假設你有一個HashMap對象,你可以將它聲明為HashMap或者Map:

Map myMap1 = new HashMap();

HashMap myMap2 = new HashMap();哪個更好呢?

按照傳統的觀點Map會更好些,因為這樣你可以改變他的具體實現類,只要這個類繼承自Map接口。傳統的觀點對于傳統的程序是正確的,但是它并不適合嵌入式系統。調用一個接口的引用會比調用實體類的引用多花費一倍的時間。如果HashMap完全適合你的程序,那么使用Map就沒有什么價值。如果有些地方你不能確定,先避免使用Map,剩下的交給IDE提供的重構功能好了。(當然公共API是一個例外:一個好的API常常會犧牲一些性能)

4、用靜態方法比虛方法好

如果你不需要訪問一個對象的成員變量,那么請把方法聲明成static。虛方法執行的更快,因為它可以被直接調用而不需要一個虛函數表。另外你也可以通過聲明體現出這個函數的調用不會改變對象的狀態。

5、不用getter和setter

在很多本地語言如C++中,都會使用getter(比如:i = getCount())來避免直接訪問成員變量(i = mCount)。在C++中這是一個非常好的習慣,因為編譯器能夠內聯訪問,如果你需要約束或調試變量,你可以在任何時候添加代碼。在Android上,這就不是個好主意了。虛方法的開銷比直接訪問成員變量大得多。在通用的接口定義中,可以依照OO的方式定義getters和setters,但是在一般的類中,你應該直接訪問變量。

6、將成員變量緩存到本地

訪問成員變量比訪問本地變量慢得多,下面一段代碼:

 

  1. for (int i = 0; i < this.mCount; i++) 
  2.  
  3.  
  4.    dumpItem(this.mItems[i]);你應該寫成: 
  5.  
  6.  int count = this.mCount; 
  7.  
  8.  
  9.  Item[] items = this.mItems; 
  10.  
  11.  
  12.  for (int i = 0; i < count; i++) 
  13.  
  14.  
  15.    dumpItems(items[i]);(顯示的使用”this”是為了表明這些是成員變量) 

另一個相似的原則是:永遠不要在for的第二個條件中調用任何方法。如下面方法所示,在每次循環的時候都會調用getCount()方法,這樣做比你在一個int先把結果保存起來開銷大很多。

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

    dumpItems(this.getItem(i));同樣如果你要多次訪問一個變量,也***先為它建立一個本地變量,例如:

  1. protected void drawHorizontalScrollBar(Canvas canvas, int width, int height) { 
  2.  
  3. if (isHorizontalScrollBarEnabled()) { 
  4.  
  5. int size = mScrollBar.getSize(false); 
  6.  
  7. if (size <= 0) { 
  8.  
  9. size = mScrollBarSize; 
  10.  
  11.  
  12. mScrollBar.setBounds(0, height – size, width, height); 
  13.  
  14.  
  15. mScrollBar.setParams( 
  16.  
  17. computeHorizontalScrollRange(), 
  18.  
  19. computeHorizontalScrollOffset(), 
  20.  
  21. computeHorizontalScrollExtent(), false); 
  22.  
  23. mScrollBar.draw(canvas); 

這里有4次訪問成員變量mScrollBar,如果將它緩存到本地,4次成員變量訪問就會變成4次效率更高的棧變量訪問。

順便說明一下,就是方法的參數與本地變量的性能是相同的。

7、使用常量

讓我們來看看這兩段在類前面的聲明:

static int intVal = 42;

static String strVal = “Hello, world!”;

編譯器會生成一個叫做<clinit>的初始化類的方法,當類***次被使用的時候這個方法會被執行。方法會將42賦給intVal,然后把一個指向類中常量表的引用賦給strVal。當以后要用到這些值的時候,會在成員變量表中查找到他們。

我們可以做一些改進,使用“final”關鍵字:

static final int intVal = 42;

static final String strVal = “Hello, world!”;

現在,類不再需要<clinit>方法,因為在成員變量初始化的時候,會將常量直接保存到類文件中。用到intVal的代碼被直接替換成42,而使用strVal的會指向一個字符串常量,而不是使用成員變量。

將一個方法或類聲明為”final”不會帶來性能的提升,但是會幫助編譯器優化代碼。舉例說,如果編譯器知道一個”getter”方法不會被重載,那么編譯器會對其采用內聯調用。

你也可以將本地變量聲明為”final”,同樣,這也不會帶來性能的提升。使用”final”只能使本地變量看起來更清晰些(但是也有些時候這是必須的,比如在使用匿名內部類的時候)。

8、謹慎使用foreach

9、避免使用枚舉

結束語:

為嵌入式系統編寫正確高效的代碼的***的方法就是去理解你的代碼究竟要做什么。如果你的確想要分配一個迭代器或者無論如何都要在Lists上面使用增強循環語法,那么一定是深思熟慮后的選擇,而不是一個不小心心的副作用。凡事預則立,不預則廢。一定要知道你在做什么。按照你自己的風格去編寫代碼,但一定要仔細考慮代碼所作的事,并找到提升速度的方法

責任編輯:chenqingxiang 來源: chenxiaoliba的博客
相關推薦

2014-07-18 14:03:06

Android高效編寫代碼

2011-03-24 13:09:11

數據庫代碼

2010-08-31 13:32:12

CSS

2010-02-05 16:49:05

編寫Android 代

2014-11-10 09:59:08

jQuery

2011-11-25 10:35:20

Java

2023-07-06 14:37:05

2010-09-09 13:59:55

CSS

2021-02-23 10:48:30

Python代碼開發

2020-09-21 06:58:56

TS 代碼建議

2024-01-30 08:54:05

JavaScript技巧代碼

2012-07-11 10:51:37

編程

2012-03-15 13:36:51

云計算JavaSpring框架

2021-06-08 09:35:11

Cleaner ReaReact開發React代碼

2022-06-27 06:23:23

代碼編程

2022-12-15 10:52:26

代碼開發

2010-09-14 13:49:38

CSS代碼

2023-02-26 23:23:36

CSS開發Web

2021-03-17 08:00:59

JS語言Javascript

2010-03-12 11:07:49

Python retu
點贊
收藏

51CTO技術棧公眾號

91高跟黑色丝袜呻吟在线观看| 在线观看三级视频| 日本不卡高清视频一区| 777精品久无码人妻蜜桃| 天天干在线观看| 久久天堂精品| 久久久精品视频成人| 大桥未久恸哭の女教师| 欧美xxx视频| 26uuu精品一区二区三区四区在线| 国产成+人+综合+亚洲欧美丁香花| 久久精品色妇熟妇丰满人妻| 99精品国产高清一区二区麻豆| 午夜精品福利一区二区三区蜜桃| 日韩欧美亚洲精品| 亚洲欧美黄色片| 天堂在线一区二区| 欧美情侣性视频| 在线观看国产精品一区| 97久久超碰| 疯狂欧美牲乱大交777| youjizz.com亚洲| 神马电影在线观看| 好男人在线视频www| 亚洲成人精选| 国产一区二区三区欧美| 性活交片大全免费看| 成人性片免费| 欧美视频一区二区三区…| 91麻豆天美传媒在线| 成年人视频在线免费观看| 丁香桃色午夜亚洲一区二区三区| 国产精品一区二区三| 99精品在线播放| 欧美日韩视频一区二区三区| 久久九九有精品国产23| 日韩免费成人av| 欧美一级二级三级视频| 欧美大片在线观看| 爱豆国产剧免费观看大全剧苏畅 | 国产91精品不卡视频| www.xxxx日本| 天天影视欧美综合在线观看| 亚洲人成电影网站色| 美女伦理水蜜桃4| 日韩三级网址| 91精品国产一区二区三区蜜臀 | 成人性生交大片免费看中文 | 国产精品久久久久永久免费观看| 久久资源av| 囯产精品久久久久久| 国产最新精品精品你懂的| 国产精品成人久久久久| 六月丁香婷婷综合| 国产亚洲毛片| 91av在线看| 少妇太紧太爽又黄又硬又爽| 国产精品日韩久久久| 91国产视频在线| 久久久久亚洲av成人毛片韩| 久久xxxx精品视频| 国产精品久久久久久久久久久久久 | 天堂91在线| 99精品久久99久久久久| 久久国产手机看片| 国产在线网站| 国产精品久久久久久久裸模| 在线视频不卡国产| 色呦呦呦在线观看| 亚洲v中文字幕| 国产精品秘入口18禁麻豆免会员| 成人免费短视频| 欧美中文字幕一区二区三区亚洲| 天天干天天干天天干天天干天天干| 深夜av在线| 欧美中文字幕一区| 伊人成人222| 视频精品一区二区三区| 亚洲成人网av| 色综合天天综合色综合av | 免费不卡欧美自拍视频| 日韩一区二区三区四区在线| 国产一区视频在线观看免费| 992tv成人免费影院| 波多野结衣视频观看| 麻豆一区二区在线| 91成人免费视频| 亚洲 欧美 激情 另类| 国产色综合久久| 中文字幕在线亚洲精品| 国产美女情趣调教h一区二区| 色综合久久88色综合天天| 国产一伦一伦一伦| 中文字幕一区二区三区四区久久| 日韩毛片在线观看| 三级黄色免费观看| 激情欧美日韩| 国产高清在线不卡| 精品人妻少妇嫩草av无码专区| 成人妖精视频yjsp地址| 日日骚一区二区网站| 天堂av中文在线| 日韩欧美成人精品| 韩国一区二区在线播放| 日韩精品免费一区二区三区竹菊| 中文字幕精品av| 国产无码精品在线观看| 美女尤物国产一区| 韩日午夜在线资源一区二区| 日本在线观看www| 精品日韩美女的视频高清| 亚洲另类第一页| 色婷婷狠狠五月综合天色拍| 久久亚洲电影天堂| 青青国产在线视频| 成人动漫在线一区| 青青草影院在线观看| 一级毛片久久久| 精品久久一区二区| 中文字幕求饶的少妇| 国产一区二区三区的电影 | 二区三区在线视频| 国产精品麻豆99久久久久久| 日本免费不卡一区二区| 高清国产一区二区三区四区五区| 国产丝袜一区二区三区免费视频| 福利所第一导航| 久久黄色级2电影| 欧美日本韩国一区二区三区| 超碰97免费在线| 日韩写真欧美这视频| 成人精品一二三区| 日韩精品午夜视频| 欧美第一黄网| 国产乱码午夜在线视频| 日韩精品一区二区三区中文不卡| 国产又黄又粗又猛又爽的| 日韩精品五月天| 免费在线成人av| 日本蜜桃在线观看视频| 精品日韩在线一区| 久久久久久久九九九九| 国产最新精品精品你懂的| 一区二区三区四区五区精品| 日韩网站中文字幕| 亚洲人成77777在线观看网| 精品人妻一区二区三区免费看| 99精品视频在线观看免费| 日本精品久久久久久久久久| 成人性生交大片免费看中文视频 | 日韩电视剧免费观看网站| 国产真实的和子乱拍在线观看| 国产高清精品久久久久| 波多野结衣 作品| 天堂va在线高清一区| 久久69精品久久久久久国产越南| 国产富婆一级全黄大片| 一区二区三区精品| av天堂一区二区| 亚洲精品少妇| 久久久久久久久久久一区| 亚洲天堂av在线| 亚洲一级黄色av| 伊人亚洲综合网| 亚洲日本在线观看| 久久久久亚洲av无码网站| 国产在线不卡| 国产欧美日本在线| 亚洲精品福利电影| 亚洲一区二区精品| 国产欧美日韩综合精品一区二区三区| 亚洲男人的天堂在线观看| xxxx视频在线观看| 亚洲少妇在线| 三级三级久久三级久久18| 农村妇女一区二区| 欧美成人合集magnet| 丰满人妻一区二区| 日韩欧美在线网址| 在线免费看视频| 国产精品 日产精品 欧美精品| 人体内射精一区二区三区| 亚洲人和日本人hd| 国产精品视频1区| 欧美日韩在线视频免费观看| 亚洲国产欧美自拍| 成人免费一级片| 亚洲精品视频在线| 欧美性xxxx图片| 麻豆91在线看| 毛片在线视频播放| 日韩欧美国产精品综合嫩v| 91中文字精品一区二区| 中文字幕高清在线播放| 日韩在线视频播放| 可以免费观看的毛片| 在线观看亚洲专区| 九九视频在线免费观看| 国产亚洲欧洲一区高清在线观看| 欧美一级特黄aaa| 亚洲精品欧洲| 亚洲自拍偷拍一区二区三区| 亚洲人成网www| 高清视频一区二区三区| 99欧美精品| 国语自产精品视频在线看一大j8 | 久久精品国产露脸对白| 模特精品在线| 国产免费裸体视频| 欧美成人milf| 欧美黑人3p| 国产精品中文字幕制服诱惑| 国产欧美一区二区三区视频| 日韩在线伦理| 欧美激情视频网站| 天堂中文а√在线| 亚洲精选一区二区| 亚洲精品久久久久久无码色欲四季| 在线观看日韩高清av| 国语对白一区二区| 亚洲欧美视频一区| 国产精品久久免费观看| 99久久精品免费看| 女同性αv亚洲女同志| 麻豆91在线看| www.激情小说.com| 久久久蜜桃一区二区人| 日韩网站在线免费观看| 欧美成人高清| 中文字幕一区二区三区乱码| 成人直播大秀| 日韩欧美视频一区二区三区四区| 亚洲精华一区二区三区| 国产精品一区二区欧美黑人喷潮水| 中文字幕日本一区| 国产日韩精品综合网站| 午夜精品成人av| 欧美亚洲免费电影| 激情黄产视频在线免费观看| 久久久在线观看| 欧美巨大xxxx做受沙滩| 久热精品视频在线观看一区| 免费观看成人高潮| 最好看的2019的中文字幕视频| 国产二区视频在线观看| 亚洲午夜女主播在线直播| 免费在线黄色影片| 日韩精品在线观看网站| 四虎精品成人影院观看地址| 亚洲精品国产品国语在线| 天天综合天天色| 日韩激情在线视频| 青青国产在线| 亚洲午夜激情免费视频| a天堂在线资源| 日韩中文字幕国产精品| 久操视频在线免费播放| 久久久精品2019中文字幕神马| 黄色网址免费在线观看| 久久91精品国产91久久久| 婷婷丁香在线| 97久久精品人人澡人人爽缅北| 日韩伦理精品| 国产精品pans私拍| 日本a人精品| 99国产超薄丝袜足j在线观看| 亚洲午夜免费| 另类小说综合网| 日韩精品永久网址| 国产盗摄视频在线观看| 亚洲精品1234| 国产成人av影视| 激情综合色播五月| 亚洲欧洲日韩综合| 久久先锋影音av鲁色资源网| 男人的天堂av网| 一区二区三区欧美久久| 亚洲免费激情视频| 欧美综合一区二区三区| 国产福利第一页| 亚洲美女av网站| 午夜激情视频在线观看| 欧美极品欧美精品欧美视频 | 中文字幕在线观看播放| 97高清免费视频| 免费高清视频在线一区| 91免费综合在线| 日韩av网站在线免费观看| 亚洲狠狠婷婷综合久久久| 中文字幕日韩欧美精品高清在线| 玩弄中年熟妇正在播放| 免费精品视频最新在线| www.啪啪.com| 国产精品黄色在线观看| 国产精品99精品无码视| 欧美色手机在线观看| 超碰在线观看av| 一本色道久久综合亚洲精品小说 | 在线视频亚洲一区| 国产熟女精品视频| 亚洲女同性videos| 怡红院av在线| 国产精品第二页| 国产乱人伦精品一区| 亚洲 欧洲 日韩| 久久久久久黄| 国产综合内射日韩久| 中文字幕一区二区三| 六月丁香激情综合| 91精品国产福利| 成a人v在线播放| 国产91精品高潮白浆喷水| 日本99精品| 亚洲欧洲精品一区| 国产精品久久久久久久免费软件| 不卡的在线视频| 久久久www成人免费毛片麻豆| 青娱乐在线视频免费观看| 欧美老人xxxx18| 久久久久久女乱国产| 久久久天堂国产精品女人| 四虎视频在线精品免费网址| 欧美日韩天天操| 99在线精品视频在线观看| 色姑娘综合天天| 亚洲欧洲av在线| 中文字幕男人天堂| 亚洲视频专区在线| 成人三级高清视频在线看| 成人9ⅰ免费影视网站| 国产精品成人a在线观看| 欧美自拍小视频| 国产偷国产偷亚洲高清人白洁| 日韩黄色a级片| 精品美女在线观看| 日韩av毛片| 国产精品久久久久久久免费大片| 亚洲破处大片| 五月天国产视频| 亚洲欧美另类小说| 国产欧美综合视频| 久久国产加勒比精品无码| 国产精品一区免费在线 | 亚洲第一综合网| 色综合激情五月| 狠狠v欧美ⅴ日韩v亚洲v大胸| 55夜色66夜色国产精品视频| 日本欧美韩国国产| 国产黄页在线观看| 26uuu国产在线精品一区二区| 国产中文字幕视频| 一区二区亚洲精品国产| yw.尤物在线精品视频| 亚洲区一区二区三区| 美腿丝袜亚洲三区| 91在线播放观看| 精品国一区二区三区| 成人影院在线视频| 久久精品magnetxturnbtih| 欧美亚洲一级| 国产精品美女高潮无套| 欧美日韩国产精品成人| 韩国中文字幕在线| 99视频国产精品免费观看| 亚洲天堂男人| 中日韩精品一区二区三区| 色域天天综合网| 日韩黄色影院| 97人人香蕉| 国产亚洲精品v| 国产99在线 | 亚洲| 欧美一区二区三区视频在线观看 | 国产精品自拍网| 欧美日韩国产精品一区二区亚洲| 图片区偷拍区小说区| 欧美日韩免费在线| 伊人在线视频| 成人自拍偷拍| 三级一区在线视频先锋| 国产免费美女视频| 精品成人佐山爱一区二区| 国产免费不卡| 干日本少妇视频| 26uuu亚洲综合色欧美| 97超碰人人草| 午夜免费久久久久| 日韩a一区二区| 日本一区二区免费视频| 在线亚洲高清视频| 亚洲小说区图片| 亚州欧美一区三区三区在线| 国产成人在线影院 | 日韩在线一二三区| 亚洲色婷婷一区二区三区| 亚洲美女精品成人在线视频| 懂色av色香蕉一区二区蜜桃| 日本a级片免费观看| 17c精品麻豆一区二区免费| 内射后入在线观看一区| 国产精品人成电影|