版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、Android高效編程指南,2010年03月,兩個(gè)基本的原則,不要做不必要做的事情 盡可能的節(jié)省內(nèi)存的使用,盡可能避免創(chuàng)建對(duì)象1(Avoid Creating Objects),越少的對(duì)象創(chuàng)建意味著越少的垃圾回收,這會(huì)提高你程序的用戶體驗(yàn)質(zhì)量。 例子: 盡量少創(chuàng)建沒用的臨時(shí)變量:,盡可能避免創(chuàng)建對(duì)象2(Avoid Creating Objects),盡量使用一維數(shù)組代替多維數(shù)組(將多維數(shù)組分割成幾個(gè)平行的一維數(shù)組): 如:兩個(gè)平行的Foo和Bar要比一個(gè)(Foo,Bar)對(duì)象數(shù)組的效率高得多,使用原生方法(Use Native Methods),盡量使用對(duì)象自身帶有的接口方法,因?yàn)檫@些方法有些
2、是使用C編寫的,比自己用Java編寫的效率高。 如String.indexOf()、String.lastIndexOf(),使用實(shí)現(xiàn)優(yōu)于使用接口(Prefer Virtual Over Interface),1、Map myMap1 = new HashMap();/常規(guī)編程 2、HashMap myMap2 = new HashMap();/嵌入式編程 接口方法的調(diào)用比實(shí)現(xiàn)類方法的調(diào)用會(huì)花費(fèi)2倍以上的時(shí)間。 多使用接口的具體實(shí)現(xiàn)類。,使用靜態(tài)優(yōu)于使用虛擬(Prefer Static Over Virtual),給方法加上static: 如果你沒有必要去訪問實(shí)例(對(duì)象)的變量,那么使你的方法
3、成為靜態(tài)方法。它會(huì)被更快的調(diào)用,因?yàn)樗恍枰粋€(gè)虛擬函數(shù)導(dǎo)向表。 給屬性加上static: 如果您的變量不需要被每個(gè)實(shí)例(對(duì)象)分享,那么使你的屬性成為靜態(tài)屬性。它會(huì)被更快的調(diào)用,因?yàn)镴VM只為靜態(tài)分配一次內(nèi)存,而非靜態(tài)變量,每創(chuàng)建一個(gè)實(shí)例時(shí), JVM就為非靜態(tài)變量分配一次內(nèi)存)。,內(nèi)在避免使用Get/Set方法(Avoid Internal Getters/Setters),外部調(diào)用時(shí)使用Get和Set函數(shù),但是在內(nèi)部調(diào)用時(shí),我們應(yīng)該直接調(diào)用。虛方法的調(diào)用比實(shí)例屬性查詢的代價(jià)還要多。,緩沖對(duì)象屬性調(diào)用(Cache Field Lookups),訪問對(duì)象屬性要比訪問本地變量慢得多。 不要這樣寫
4、: for (int i = 0; i this.mCount; i+) dumpItem(this.mItemsi); 應(yīng)該這樣寫: int count = this.mCount; Item items = this.mItems; for (int i = 0; i count; i+) dumpItems(itemsi);,聲明Final常量(Declare Constants Final),static int intVal = 42; static String strVal = Hello, world!; 當(dāng)類被創(chuàng)建時(shí),編譯器會(huì)調(diào)用一個(gè)類初始化方法,這個(gè)方法會(huì)對(duì)intVal和s
5、trVal進(jìn)行初始化處理。 可以寫成如下: static final int intVal = 42; static final String strVal = Hello, world!; 初始化是由虛擬機(jī)來處理的,所以類的創(chuàng)建將更快。,慎重使用增強(qiáng)型For循環(huán)語句(Use Enhanced For Loop Syntax With Caution),增強(qiáng)的for循環(huán)在數(shù)組里面性能很好,但是當(dāng)和Iterable對(duì)象一起使用時(shí)要謹(jǐn)慎,因?yàn)檫@里多了一個(gè)對(duì)象的創(chuàng)建。,避免使用枚舉(Avoid Enums),public class Foo public enum Shrubbery GROUND, CRAWLING, HANGING 這會(huì)轉(zhuǎn)變成為一個(gè)900字節(jié)的class文件(Foo$Shrubbery.class)。第一次使用時(shí),類的初始化要在獨(dú)享上面調(diào)用方法去描述列舉的每一項(xiàng),每一個(gè)對(duì)象都要有它自身的靜態(tài)空間,整個(gè)被儲(chǔ)存在一個(gè)數(shù)組里面(一個(gè)叫做“$VALUE”的靜態(tài)數(shù)組)。那是一大堆的代碼和數(shù)據(jù),僅僅是為了三個(gè)整數(shù)值,代價(jià)很高。,通過內(nèi)聯(lián)類使用包空間(Use Package Scope with Inner Classes),建議使用內(nèi)部類。,避免浮點(diǎn)類型的使用(Avoid Float),盡量避免使用floa
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 養(yǎng)老院員工培訓(xùn)與考核制度
- 養(yǎng)老院工作人員請(qǐng)假及調(diào)休制度
- 企業(yè)食堂安全管理制度
- 醫(yī)療凈化項(xiàng)目環(huán)評(píng)報(bào)告
- CCAA - 第二篇:合格評(píng)定答案及解析 - 詳解版(161題)
- 2025年廣州市第十二人民醫(yī)院招聘考試真題
- 鎂電解工崗前環(huán)保知識(shí)考核試卷含答案
- 竹藤編藝師崗前核心技能考核試卷含答案
- 我國上市公司并購協(xié)同效應(yīng)的深度剖析與策略優(yōu)化
- 獸醫(yī)化驗(yàn)員創(chuàng)新方法強(qiáng)化考核試卷含答案
- 柴油維修技術(shù)培訓(xùn)課件
- 安全附件管理制度規(guī)范
- 2026院感知識(shí)考試題及答案
- 《紅樓夢》導(dǎo)讀 (教學(xué)課件) -高中語文人教統(tǒng)編版必修下冊
- DL∕T 5210.6-2019 電力建設(shè)施工質(zhì)量驗(yàn)收規(guī)程 第6部分:調(diào)整試驗(yàn)
- GB/T 16927.1-2011高電壓試驗(yàn)技術(shù)第1部分:一般定義及試驗(yàn)要求
- 政府會(huì)計(jì)準(zhǔn)則優(yōu)秀課件
- 陣發(fā)性室性心動(dòng)過速課件
- 無機(jī)與分析化學(xué)理論教案
- 名詞性從句 講義-英語高考一輪復(fù)習(xí)語法部分
- T∕ZZB 2722-2022 鏈板式自動(dòng)排屑裝置
評(píng)論
0/150
提交評(píng)論