亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

Java性能的十一個用法分享

2019-11-26 15:23:16
字體:
來源:轉載
供稿:網友

Java語言習慣用語

1。循環

在重要的循環里,消除循環終止判斷時的方法調用。
例如:將
for(int i=0; i<collection.size();i++){ ... }
替換為…
for(int i=0; n=collection.size();i<n;i++){...}
通常,把與循環index不相關的移到循環的外面
for(int i=0; terminal=x.length;i<terminal;i++){x[i] = x[i]/scaleA *scaleB;}
應該該成:
Double scale = scaleB*scaleA;for(int i=0; terminal=x.length;i<terminal;i++){x[i] = x[i]/scale ;}

2。字符串

消除字符串連接

創建長字符串時,總是使用StringBuffter代替String
預先分配StringBuffer空間 StringBuffer sb = new StringBuffer(5000);

3?;緮祿愋?/strong>

在重要的循環里使用基本數據類型(int型數據通常比long/double型數據更快)
基本數據類型(Boolean,Integer,etc)的包裝類主要用在當傳遞的方法參數必須是一個對象的引用時(而不是一個基本數據類型)
對所有的常量代數表達式使用static final修飾符
使常量更容易引用(編譯器預先計算常量表達式)

4。異常

異常只用于單個真正的錯誤條件 如 拋出異常時
拋出一個異常和執行一個catch代碼塊花費是很高的(主要由于當創建一個異常時要獲得線程棧的一個快照)
只當條件真的異常時才拋出一個異常
拋出異常首先要創建一個新的對象。
Throwable接口的構造函數調用名為fillInStackTrace()的本地(Native)方法,fillInStackTrace()方法檢查堆棧,收集調用跟蹤信息。
只要有異常被拋出,VM就必須調整調用堆棧,因為在處理過程中創建了一個新的對象。
異常只能用于錯誤處理,不應該用來控制程序流程。
使編譯器和運行時最優化,將幾個方法調用放在一個try/catch塊中,而不是為每個方法調用實現幾個try/catch塊

try{ Some.method1(); //Difficut for java1.4 }catch(method1Exception e){ handle exception
1 // to optimize this code } try{ Some.method2(); //Difficut for java1.4 }catch(method2Exception e){ handle exception
2 // to optimize this code } try{ Some.method3(); //Difficut for java1.4 }catch(method3Exception e){ handle exception
3 // to optimize this code
}

應該寫為:

try{ Some.method1(); Some.method2(); Some.method3(); //Difficut for java1.4 }catch(method1Exception e){ handle exception 1 }catch(method2Exception e){ handle exception 2 }catch(method3Exception e){ handle exception 3 }

5?;鶞?/strong>

注意,所有這些技巧會因不同的平臺和虛擬機而不同

一 例如:在有些servlet容器內,通過一個OutputStream作為字節輸出會更快

二 在其它的容器內,通過一個PrintWriter輸出字符會更快

這些技巧描述的是最可移植的建議

你可能需要運行一些基準來判斷在你的平臺上怎么樣是最快的

6。不用new關鍵詞創建類的實例

用new關鍵詞創建類的實例時,構造函數鏈中的所有構造函數都會被自動調用。

但如果一個對象實現了Cloneable接口,我們可以調用它的clone()方法。clone()方法不會調用任何類構造函數。

在使用設計模式(Design Pattern)的場合,如果用Factory模式創建對象,則改用clone()方法創建新的對象實例非常簡單。

例如,下面是Factory模式的一個典型實現:

public static Credit getNewCredit() { return new Credit(); }

優化后:

private static Credit BaseCredit = new Credit(); public static Credit getNewCredit() { return (Credit) BaseCredit.clone();}

上面的思路對于數組處理同樣很有用。

7。使用非阻塞I/O

Java版本較低的JDK不支持非阻塞I/O API。為避免I/O阻塞,一些應用采用了創建大量線程的辦法(在較好的情況下,會使用一個緩沖池)。這種技術可以在許多必須支持并發I/O流的應用中見到,如Web服務器、報價和拍賣應用等。然而,創建Java線程需要相當可觀的開銷。

JDK 1.4引入了非阻塞的I/O庫(java.nio)。如果應用要求使用版本較早的JDK,在這里有一個支持非阻塞I/O的軟件包。

8。不要重復初始化變量

默認情況下,調用類的構造函數時, Java會把變量初始化成確定的值:所有的對象被設置成null,整數變量(byte、short、int、long)設置成0,float和 double變量設置成0.0,邏輯值設置成false。

當一個類從另一個類派生時,這一點尤其應該注意,因為用new關鍵詞創建一個對象時,構造函數鏈中的所有構造函數都會被自動調用。

9。盡量指定類的final修飾符

帶有final修飾符的類是不可派生的。在Java核心API中,有許多應用final的例子,例如java.lang.String。為String類指定final防止了人們覆蓋length()方法。

另外,如果指定一個類為final,則該類所有的方法都是final。Java編譯器會尋找機會內聯(inline)所有的final方法(這和具體的編譯器實現有關)。此舉能夠使性能平均提高50%。

10。盡量使用局部變量

調用方法時傳遞的參數以及在調用中創建的臨時變量都保存在棧(Stack)中,速度較快。其他變量,如靜態變量、實例變量等,都在堆(Heap)中創建,速度較慢。另外,依賴于具體的編譯器/JVM,局部變量還可能得到進一步優化。請參見《盡可能使用堆棧變量》。

11。乘法和除法

考慮下面的代碼:

for (val = 0; val < 100000; val +=5) { alterX = val * 8; myResult = val * 2; }

優化后:

for (val = 0; val < 100000; val += 5) { alterX = val << 3; myResult = val << 1; }

修改后的代碼不再做乘以8的操作,而是改用等價的左移3位操作,每左移1位相當于乘以2。相應地,右移1位操作相當于除以2。值得一提的是,雖然移位操作速度快,但可能使代碼比較難于理解,所以最好加上一些注釋。

private static Credit BaseCredit = new Credit();public static Credit getNewCredit() {return (Credit) BaseCredit.clone();}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品视频中文字幕| 在线成人一区二区| 欧美与欧洲交xxxx免费观看| 欧美大片在线看免费观看| 国精产品一区一区三区有限在线| 国产欧美精品在线播放| 色婷婷久久一区二区| 在线精品播放av| 亚洲国产日韩欧美在线图片| 亚洲国产精品va在线看黑人| 亚洲精品国产品国语在线| 不卡av电影在线观看| 成人久久久久久| 国产成人精品久久二区二区| 国产日韩欧美影视| 91精品久久久久久久久久久久久久| 久久久亚洲欧洲日产国码aⅴ| 欧美激情亚洲精品| 国产精品中文字幕在线观看| 国产精品美女免费视频| 不卡av在线网站| 91高清视频免费| 久久免费精品日本久久中文字幕| 视频直播国产精品| 国产精品第三页| 成人97在线观看视频| 国产日韩精品一区二区| 中文字幕欧美亚洲| 欧美成人午夜影院| 欧美高清videos高潮hd| 久久久国产精彩视频美女艺术照福利| 97在线精品视频| 国产欧洲精品视频| 亚洲精品国产免费| 欧美理论片在线观看| 日本高清久久天堂| 91在线免费看网站| 黑人狂躁日本妞一区二区三区| 久久99久国产精品黄毛片入口| 久久中国妇女中文字幕| 最近中文字幕mv在线一区二区三区四区| 国产精品国产亚洲伊人久久| 秋霞成人午夜鲁丝一区二区三区| 亚洲国模精品私拍| 九九热99久久久国产盗摄| 丝袜情趣国产精品| 国产精品视频公开费视频| 欧美日韩第一页| 97视频在线观看免费| 欧美性猛交xxxx久久久| 在线观看亚洲视频| 亚洲人a成www在线影院| 色综合色综合网色综合| 欧美成年人视频网站欧美| 日韩在线观看成人| 久久精品国产一区二区三区| 国产视频综合在线| 精品国产一区二区三区久久久狼| 国产精品人人做人人爽| 全球成人中文在线| 欧美国产在线电影| 欧美第一黄网免费网站| 国产脚交av在线一区二区| 尤物九九久久国产精品的分类| 久热精品在线视频| 国产精品无码专区在线观看| 亚洲成人精品久久| 欧美日韩国产综合视频在线观看中文| 国产欧美欧洲在线观看| 久久精视频免费在线久久完整在线看| 日韩av片免费在线观看| 久久精品国产成人精品| 国产精品视频1区| 欧美国产激情18| 91高清在线免费观看| 欧美亚洲第一页| 亚洲福利视频二区| 中文字幕亚洲情99在线| 久久久久www| 国产成人久久久精品一区| 亚洲午夜女主播在线直播| 亚洲精品91美女久久久久久久| 成人国产精品一区| 欧美性黄网官网| 夜夜嗨av一区二区三区免费区| 欧美片一区二区三区| 亚洲美女在线看| 日韩中文字幕在线视频播放| 丝袜一区二区三区| 国产欧美va欧美va香蕉在线| 亚洲天堂男人的天堂| 欧洲永久精品大片ww免费漫画| 国产欧美精品va在线观看| 欧美最猛黑人xxxx黑人猛叫黄| 亚洲视频999| 欧美日韩xxx| 在线色欧美三级视频| 精品国产91久久久| 2019日本中文字幕| 中文字幕日韩欧美精品在线观看| 亚洲综合大片69999| 一区二区欧美久久| 91精品国产91久久久久久吃药| 亚洲伊人久久大香线蕉av| 欧美激情精品久久久久久黑人| zzijzzij亚洲日本成熟少妇| 欧美丰满片xxx777| 一本大道香蕉久在线播放29| 91精品视频播放| 欧美精品在线极品| 日韩成人中文电影| 国产亚洲欧洲在线| 91免费看视频.| 亚洲最大成人在线| 成人免费网站在线看| 亚洲成人久久一区| 国产精品99久久99久久久二8| 日韩在线视频一区| 日韩欧美国产一区二区| 日韩精品在线电影| 2019中文字幕免费视频| 欧美诱惑福利视频| 91天堂在线视频| 最新91在线视频| 亚洲精品一区二区网址| 欧美日韩在线视频一区| 久久久噜噜噜久久| 亚洲欧美一区二区三区在线| 九九热精品视频在线播放| 欧美日韩一区二区在线| 91在线精品视频| 久久综合免费视频影院| 黄色一区二区三区| 亚洲美女www午夜| 国产精品久久色| 欧美诱惑福利视频| 久久精品成人欧美大片| 久久99国产综合精品女同| 最近2019中文字幕大全第二页| 欧美成人精品一区二区三区| 欧美野外wwwxxx| 日本欧美黄网站| 日韩高清免费观看| 日韩精品免费视频| 亚洲人线精品午夜| 国产精品三级久久久久久电影| 国产69精品久久久久9999| 久久色免费在线视频| 色悠悠久久久久| 亚洲国产精品久久久久久| 日韩欧美在线字幕| 热久久99这里有精品| 美日韩精品免费视频| 色综久久综合桃花网| 97在线视频免费看| 欧美野外wwwxxx| 欧美国产极速在线| 欧美老妇交乱视频| 久久国产色av| 亚洲欧美另类中文字幕| 美女久久久久久久| 久久久久久久91| 91av在线免费观看| 精品国产区一区二区三区在线观看|