国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

分享幾個提高Java性能的高效用法

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

1.在重要的循環里,消除循環終止判斷時的方法調用

復制代碼 代碼如下:

for(int i=0; i<collection.size(); i++)
{
...
}
for(int i=0; i<collection.size(); i++)
{
...
}

替換為…

復制代碼 代碼如下:

view plaincopy to clipboardprint?
for(int i=0;n=collection.size();i<n;i++)
{
...
}

2.通常,把與循環index不相關的移到循環的外面

復制代碼 代碼如下:

for(int i=0;terminal=x.length;i<terminal;i++){
 X[i]=x[i]/scaleA*scaleB;
}
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.基本數據類型

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

一 使常量更容易引用(編譯器預先計算常量表達式)

4.異常

異常只用于單個真正的錯誤條件

一 拋出一個異常和執行一個catch代碼塊花費是很高的(主要由于當創建一個異常時要獲得線程棧的一個快照)
一 只當條件真的異常時才拋出一個異常

使編譯器和運行時最優化,將幾個方法調用放在一個try/catch塊中,而不是為每個方法調用實現幾個try/catch塊

5.基準

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

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

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

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 牟定县| 泉州市| 巢湖市| 天长市| 水富县| 石景山区| 云林县| 陆川县| 奉新县| 洞口县| 太谷县| 富源县| 镇宁| 日喀则市| 辽阳县| 基隆市| 镇安县| 松溪县| 乐东| 九江市| 东宁县| 和田县| 华宁县| 阿坝| 乌审旗| 泽州县| 邵武市| 旬阳县| 三江| 池州市| 宽甸| 中西区| 济阳县| 西峡县| 沙洋县| 静海县| 安达市| 越西县| 吴忠市| 彰化县| 文安县|