Java優化編程學習筆記一-----Java核心類與性能優化

[size=large][b]一、散列表類與性能優化[/b][/size]
[b]線程同步散列表類[/b]
1.Vector 與ArrayList
對於線程安全而言,一些散列表核心類是線程安全的,如Vector類,一些核心類不是線程安全的,如ArrayList類。
原則:對線程安全有嚴格要求時,儘量選用線程安全的散列表類,在不要求的情況下,儘量選用非線程安全的散列表類,因爲線程安全的散列表會將本來可以並行處理的任務的多線程進行排隊。當這些線程試圖並行訪問該散列表對象時,會被轉爲串行處理。

2.設置ArrayList初始化容量
ArrayList給新添加的元素提供必要的存儲空間,需要增加自身的內部數據結構,這個過程由系統自動完成。但如果數組很大,需要提高添加元素的性能
先看一個例子
public class SetArraySize{
final int N = 1000000;
Object obj=new Object();
ArrayList list = new ArrayList();
long startTime = System.currentTimeMills();
for(int i=1; i<N; i++){
list.add(obj);
}
long endTime = System.currentTimeMills();

System.out.println("沒有ensucreCapacity耗時:"+ (endTime-startTime) +ms);

list = new ArrayList();
long startTime = System.currentTimeMills();
list.encrureCapacity(N);
for(int i=1; i<N; i++){
list.add(obj);
}
long endTime = System.currentTimeMills();

System.out.println("調用ensucreCapacity耗時:"+ (endTime-startTime)+ms);
}



運行結果:
沒有ensucreCapacity耗時:172ms
調用ensucreCapacity耗時:63ms

提前調用ensucreCapacity,系統性能大大提高

3、ArrayList與LinkedList
ArrayList通過內部數組結構Object[]實現,而LinkedList通過一系列的內部記錄連接在一起實現,不同場合的應用,性能差別較大
[size=large][b]二、String類與性能優化[/b][/size]

[b]1.字符串累加與性能優化[/b]
StringBuffer.append累加字符串比 + 或+=累加性能高很多,數值越大,差別越大

[b]2.字符串的lentht()與性能優化[/b]

在循環外就計算好字符串的長度int len=s.length(),不要在循環中用for(int i=0;i<s.length();i++).每循環一次都要計算長度,必然耗系統資源

[b]3.toCharArray()[/b]

調用toCharArray()將字符串轉爲數組,通過數組索引值獲取指定位置的字符,比用charAt()逐一獲取特定位置的字符性能提高

[b]4.字符串轉爲數字[/b]

d=new Double("8.97");
d=new Double(8.97); 第二種寫法比第一種寫法性能高很多倍

[size=large][b]三.系統I/O類[/b][/size]

1.通過系統緩衝流提高I/O操作效率
2.自定製緩衝區提高I/O操作效率
更大程度提升系統性能。
3.通過壓縮流提高I/O操作效率
ZipOutputStream
發佈了28 篇原創文章 · 獲贊 0 · 訪問量 1310
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章