




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、1 all rights reserved, copyright ffcs 2008 福建富士通信息軟件有限公司(福建富士通信息軟件有限公司(ffcs) fujian fujitsu communication software co., ltd. androidandroid高效編程指南高效編程指南 20132013年年9 9月月1313日日 2 all rights reserved, copyright ffcs 2008 福建富士通信息軟件有限公司(福建富士通信息軟件有限公司(ffcs) fujian fujitsu communication software co., ltd. 兩
2、個(gè)基本的原則兩個(gè)基本的原則 不要做不必要做的事情不要做不必要做的事情 盡可能的節(jié)省內(nèi)存的使用盡可能的節(jié)省內(nèi)存的使用 3 all rights reserved, copyright ffcs 2008 福建富士通信息軟件有限公司(福建富士通信息軟件有限公司(ffcs) fujian fujitsu communication software co., ltd. 盡可能避免創(chuàng)建對象盡可能避免創(chuàng)建對象1 1(avoid creating objectsavoid creating objects) 越少的對象創(chuàng)建意味著越少的垃圾回收,這會提高你程序的用戶體驗(yàn)質(zhì)越少的對象創(chuàng)建意味著越少的垃圾回收,
3、這會提高你程序的用戶體驗(yàn)質(zhì) 量。量。 例子:例子: u盡量少創(chuàng)建沒用的臨時(shí)變量:盡量少創(chuàng)建沒用的臨時(shí)變量: 4 all rights reserved, copyright ffcs 2008 福建富士通信息軟件有限公司(福建富士通信息軟件有限公司(ffcs) fujian fujitsu communication software co., ltd. 盡可能避免創(chuàng)建對象盡可能避免創(chuàng)建對象2 2(avoid creating objectsavoid creating objects) u盡量使用一維數(shù)組代替多維數(shù)組(將多維數(shù)組分割成幾個(gè)平行的一維盡量使用一維數(shù)組代替多維數(shù)組(將多維數(shù)組分割
4、成幾個(gè)平行的一維 數(shù)組):數(shù)組): 如:兩個(gè)平行的如:兩個(gè)平行的foofoo和和barbar要比一個(gè)(要比一個(gè)(foo,barfoo,bar)對象數(shù)組的)對象數(shù)組的 效率高得多效率高得多 5 all rights reserved, copyright ffcs 2008 福建富士通信息軟件有限公司(福建富士通信息軟件有限公司(ffcs) fujian fujitsu communication software co., ltd. 使用原生方法(使用原生方法(use native methodsuse native methods) 盡量使用對象自身帶有的接口方法,因?yàn)檫@些方法有些是使用盡量
5、使用對象自身帶有的接口方法,因?yàn)檫@些方法有些是使用c c編寫的,編寫的, 比自己用比自己用javajava編寫的效率高。編寫的效率高。 如如string.indexofstring.indexof()()、string.lastindexofstring.lastindexof()() 6 all rights reserved, copyright ffcs 2008 福建富士通信息軟件有限公司(福建富士通信息軟件有限公司(ffcs) fujian fujitsu communication software co., ltd. 使用實(shí)現(xiàn)優(yōu)于使用接口使用實(shí)現(xiàn)優(yōu)于使用接口(prefer vir
6、tual over interface)(prefer virtual over interface) 1、map mymap1 = new hashmap();/常規(guī)編程常規(guī)編程 2、hashmap mymap2 = new hashmap();/嵌入式編程嵌入式編程 接口方法的調(diào)用比實(shí)現(xiàn)類方法的調(diào)用會花費(fèi)接口方法的調(diào)用比實(shí)現(xiàn)類方法的調(diào)用會花費(fèi)2倍以上的時(shí)間。倍以上的時(shí)間。 多使用接口的具體實(shí)現(xiàn)類。多使用接口的具體實(shí)現(xiàn)類。 7 all rights reserved, copyright ffcs 2008 福建富士通信息軟件有限公司(福建富士通信息軟件有限公司(ffcs) fujian f
7、ujitsu communication software co., ltd. 使用靜態(tài)優(yōu)于使用虛擬使用靜態(tài)優(yōu)于使用虛擬(prefer static over virtual)(prefer static over virtual) 給方法加上給方法加上static: 如果如果你沒有必要去你沒有必要去訪問實(shí)例訪問實(shí)例(對象對象)的變量,的變量,那么使你的那么使你的方法成為方法成為靜態(tài)靜態(tài)方方 法。法。它會被更快的調(diào)用,因?yàn)樗恍枰粋€(gè)虛擬函數(shù)導(dǎo)向表它會被更快的調(diào)用,因?yàn)樗恍枰粋€(gè)虛擬函數(shù)導(dǎo)向表。 給屬性加上給屬性加上static: 如果您的變量不需要被每個(gè)實(shí)例如果您的變量不需要被每個(gè)實(shí)例(對
8、象對象)分享,那么使你的屬性成為靜態(tài)分享,那么使你的屬性成為靜態(tài) 屬性。它會被更快的調(diào)用,因?yàn)閷傩?。它會被更快的調(diào)用,因?yàn)閖vm只只為靜態(tài)分配一次內(nèi)存,而非靜態(tài)為靜態(tài)分配一次內(nèi)存,而非靜態(tài) 變量,每創(chuàng)建一個(gè)實(shí)例時(shí),變量,每創(chuàng)建一個(gè)實(shí)例時(shí), jvm就為非靜態(tài)變量分配一次內(nèi)存就為非靜態(tài)變量分配一次內(nèi)存)。 8 all rights reserved, copyright ffcs 2008 福建富士通信息軟件有限公司(福建富士通信息軟件有限公司(ffcs) fujian fujitsu communication software co., ltd. 內(nèi)在避免使用內(nèi)在避免使用get/setget/
9、set方法方法(avoid internal getters/setters)(avoid internal getters/setters) 外部調(diào)用時(shí)使用外部調(diào)用時(shí)使用get和和set函數(shù),但是在內(nèi)部調(diào)用時(shí),我們應(yīng)該直接函數(shù),但是在內(nèi)部調(diào)用時(shí),我們應(yīng)該直接 調(diào)用。虛方法的調(diào)用比實(shí)例屬性查詢的代價(jià)還要多。調(diào)用。虛方法的調(diào)用比實(shí)例屬性查詢的代價(jià)還要多。 9 all rights reserved, copyright ffcs 2008 福建富士通信息軟件有限公司(福建富士通信息軟件有限公司(ffcs) fujian fujitsu communication software co., lt
10、d. 緩沖對象屬性調(diào)用緩沖對象屬性調(diào)用(cache field lookups)(cache field lookups) 訪問對象屬性要比訪問本地變量慢得多。訪問對象屬性要比訪問本地變量慢得多。 不要這樣寫不要這樣寫: : for (for (intint i i = 0; = 0; i i this.mcountthis.mcount; ; i i+)+) dumpitemdumpitem( (this.mitemsthis.mitems i i);); 應(yīng)該這樣寫應(yīng)該這樣寫: : intint count = count = this.mcountthis.mcount; ; item
11、items = item items = this.mitemsthis.mitems; ; for ( for (intint i i = 0; = 0; i i count; count; i i+)+) dumpitemsdumpitems(items(itemsi i);); 10 all rights reserved, copyright ffcs 2008 福建富士通信息軟件有限公司(福建富士通信息軟件有限公司(ffcs) fujian fujitsu communication software co., ltd. 聲明聲明finalfinal常量常量(declare cons
12、tants final)(declare constants final) static static intint intvalintval = 42; = 42; static string static string strvalstrval = hello, world!; = hello, world!; 當(dāng)類被創(chuàng)建時(shí),編譯器會調(diào)用一個(gè)類初始化方法當(dāng)類被創(chuàng)建時(shí),編譯器會調(diào)用一個(gè)類初始化方法 ,這個(gè),這個(gè) 方法會對方法會對intvalintval和和strvalstrval進(jìn)行初始化處理。進(jìn)行初始化處理。 可以寫成如下:可以寫成如下: static final static final
13、 intint intvalintval = 42; = 42; static final string static final string strvalstrval = hello, world!; = hello, world!; 初始化是由虛擬機(jī)來處理的,所以類的創(chuàng)建將更快。初始化是由虛擬機(jī)來處理的,所以類的創(chuàng)建將更快。 11 all rights reserved, copyright ffcs 2008 福建富士通信息軟件有限公司(福建富士通信息軟件有限公司(ffcs) fujian fujitsu communication software co., ltd. 慎重使用增強(qiáng)型
14、慎重使用增強(qiáng)型forfor循環(huán)語句循環(huán)語句(use enhanced for loop (use enhanced for loop syntax with caution)syntax with caution) 增強(qiáng)的增強(qiáng)的forfor循環(huán)在數(shù)組里面性能很好,但是當(dāng)和循環(huán)在數(shù)組里面性能很好,但是當(dāng)和iterableiterable對象一起使用對象一起使用 時(shí)要謹(jǐn)慎,因?yàn)檫@里多了一個(gè)對象的創(chuàng)建。時(shí)要謹(jǐn)慎,因?yàn)檫@里多了一個(gè)對象的創(chuàng)建。 12 all rights reserved, copyright ffcs 2008 福建富士通信息軟件有限公司(福建富士通信息軟件有限公司(ffcs) fu
15、jian fujitsu communication software co., ltd. 避免使用枚舉避免使用枚舉(avoid (avoid enumsenums) ) public class public class foofoo public public enumenum shrubbery ground, crawling, hanging shrubbery ground, crawling, hanging 這會轉(zhuǎn)變成為一個(gè)這會轉(zhuǎn)變成為一個(gè)900900字節(jié)的字節(jié)的classclass文件(文件(foo$shrubbery.classfoo$shrubbery.class)。第)
16、。第 一次使用時(shí),類的初始化要在獨(dú)享上面調(diào)用方法去描述列舉的每一項(xiàng),一次使用時(shí),類的初始化要在獨(dú)享上面調(diào)用方法去描述列舉的每一項(xiàng), 每一個(gè)對象都要有它自身的靜態(tài)空間,整個(gè)被儲存在一個(gè)數(shù)組里面(一每一個(gè)對象都要有它自身的靜態(tài)空間,整個(gè)被儲存在一個(gè)數(shù)組里面(一 個(gè)叫做個(gè)叫做“$value”$value”的靜態(tài)數(shù)組)。那是一大堆的代碼和數(shù)據(jù),僅僅是為的靜態(tài)數(shù)組)。那是一大堆的代碼和數(shù)據(jù),僅僅是為 了三個(gè)整數(shù)值,代價(jià)很高。了三個(gè)整數(shù)值,代價(jià)很高。 13 all rights reserved, copyright ffcs 2008 福建富士通信息軟件有限公司(福建富士通信息軟件有限公司(ffcs)
17、fujian fujitsu communication software co., ltd. 通過內(nèi)聯(lián)類使用包空間通過內(nèi)聯(lián)類使用包空間(use package scope with inner (use package scope with inner classes)classes) 建議使用內(nèi)部類。建議使用內(nèi)部類。 14 all rights reserved, copyright ffcs 2008 福建富士通信息軟件有限公司(福建富士通信息軟件有限公司(ffcs) fujian fujitsu communication software co., ltd. 避免浮點(diǎn)類型的使用避免浮點(diǎn)類型的使用(avoid float)(avoid float) 盡量避免使用盡量避免使用floatfloat類型:類型: 嵌入式的處理器通常并不支持浮點(diǎn)數(shù)的處理。所有的嵌入
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- DB3709T 039-2025 泰山靈芝-羊肚菌周年輪作栽培技術(shù)規(guī)程
- 福建裝配式鋼板倉施工方案
- 進(jìn)入自然保護(hù)區(qū)施工方案
- 氧氣管道脫脂施工方案
- 采光井加陽光房施工方案
- 街道巷口硬化施工方案
- 吉林展會裝潢施工方案
- 耐高溫超輕硅酸鈣隔熱保濕材料項(xiàng)目風(fēng)險(xiǎn)識別與評估綜合報(bào)告
- 智研咨詢發(fā)布:中國城市礦產(chǎn)行業(yè)市場現(xiàn)狀及投資前景分析報(bào)告
- 2025年2月上海市高三聯(lián)考高考調(diào)研英語試題(答案詳解)
- 2024-2025學(xué)年六年級上學(xué)期數(shù)學(xué)第三單元3.1-搭積木比賽(教案)
- DeepSeek從入門到精通
- 植保機(jī)械技術(shù)培訓(xùn)課件
- 2024年水利工程建設(shè)行業(yè)市場發(fā)展監(jiān)測及投資潛力預(yù)測報(bào)告
- 醫(yī)保電子憑證培訓(xùn)
- 施工現(xiàn)場交叉作業(yè)安全防護(hù)管理措施
- 特殊學(xué)生檔案
- 2024年02月浙江2024年蕭山農(nóng)商銀行春季校園招考筆試歷年參考題庫附帶答案詳解
- 高中地理興趣小組活動(dòng)方案
- 立案委托書撰寫指南讓法律更簡單3篇
評論
0/150
提交評論